i using dropwizard 0.7.0 build api file upload. ran trouble validating uploaded file size limit. want check size before writing file disk
@post @consumes(mediatype.multipart_form_data) @produces(mediatype.text_plain) public response uploadfile(@context final httpservletrequest request, @formdataparam("file") formdatabodypart filebodypart) { /* * check request size */ request.getpart("file").getsize(); ......... }
it throws error:
java.lang.illegalstateexception: no multipart config servlet @ org.eclipse.jetty.server.request.getparts(request.java:2075) ~[jetty- server-9.0.7.v20131107.jar:9.0.7.v20131107] @ org.eclipse.jetty.server.request.getpart(request.java:2055) ~[jetty-server-9.0.7.v20131107.jar:9.0.7.v20131107]
edit ----------------------
@david
upgraded dropwizard 0.8.0 ran error
com.sun.jersey.spi.inject.errors: following errors , warnings have been detected resource and/or provider classes: org.glassfish.jersey.media.multipart.file.formdatabodypart org.glassfish.jersey.media.multipart.file.filedatabodypart org.glassfish.jersey.media.multipart.formdatacontentdisposition
using these dependencies
<dependency> <groupid>io.dropwizard</groupid> <artifactid>dropwizard-forms</artifactid> <version>${dropwizard.version}</version> </dependency>
and
<dependency> <groupid>org.glassfish.jersey.media</groupid> <artifactid>jersey-media-multipart</artifactid> <version>2.23.2</version> </dependency>
added
bootstrap.addbundle(new multipartbundle());
and (after first failure)
env.jersey().register(multipartfeature.class);
what missing here?
being able submit multipart data requires additional dropwizard dependency. 0.8 , higher dependency dropwizard-forms
.
<dependency> <groupid>io.dropwizard</groupid> <artifactid>dropwizard-forms</artifactid> <version>${dropwizard.version}</version> </dependency>
http://www.dropwizard.io/0.8.0/docs/manual/forms.html
example usage:
@post @consumes(mediatype.multipart_form_data) public response uploadfile( @formdataparam("myfilename") inputstream file, @formdataparam("myfilename") formdatacontentdisposition filemetadata ){ long filesize = filemetadata.getsize(); // etc }
this i'm using. perhaps upgrading solution you.
if not, possible dropwizard 0.7 haven't had it... quick google, looks need following dependency:
<dependency> <groupid>com.sun.jersey.contribs</groupid> <artifactid>jersey-multipart</artifactid> <version>1.18.1</version> </dependency>
... , add following applications run
method:
environment.jersey().register(multipartfeature.class);
given error "no multipart config servlet" i'm assuming upload doesn't work @ all, without size check?
Comments
Post a Comment