jetty - How to find the size of a file uploaded via Dropwizard REST API -


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