Ich verwende Dropwizard 0.7.0, um eine API für den Dateiupload zu erstellen. In Schwierigkeiten geraten, die hochgeladene Dateigrößenbeschränkung zu validieren. Ich mag die Größe überprüfen, bevor Sie die Datei auf der FestplatteSo ermitteln Sie die Größe einer Datei, die über die Dropwizard-REST-API hochgeladen wurde
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.TEXT_PLAIN)
public Response uploadFile(@Context final HttpServletRequest request, @FormDataParam("file") FormDataBodyPart fileBodyPart) {
/*
* Check the request size
*/
request.getPart("file").getSize();
.........
}
schreibt es ein Fehler wirft:
java.lang.IllegalStateException: No multipart config for servlet
at org.eclipse.jetty.server.Request.getParts(Request.java:2075) ~[jetty- server-9.0.7.v20131107.jar:9.0.7.v20131107]
at org.eclipse.jetty.server.Request.getPart(Request.java:2055) ~[jetty-server-9.0.7.v20131107.jar:9.0.7.v20131107]
EDIT ------------------ ----
@ David
Upgraded 0.8.0 jedoch dropwizard in einen anderen Fehler lief
com.sun.jersey.spi.inject.Errors: The following errors and warnings have been detected with 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
diese Abhängigkeiten Mit
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-forms</artifactId>
<version>${dropwizard.version}</version>
</dependency>
und
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.23.2</version>
</dependency>
hinzugefügt
bootstrap.addBundle(new MultiPartBundle());
und auch das (nach dem ersten Ausfall)
env.jersey().register(MultiPartFeature.class);
Was fehlt mir hier?
Ich brauche die 0.7.0 Version und die Abhängigkeit ist in Ort com.sun.jersey.contribs Jersey-mehrt 1.18.1 Auch wenn die Größe zu verwenden, Überprüfung kann nicht durchgeführt werden, ich kann eine Datei hochladen. Ich habe auch versucht final MultipartConfigElement MULTI_PART_CONFIG = new MultipartConfigElement ("", 102400, -1L, -1), um das mehrteiligen Config Element in einem Filter zu setzen; ServletRequest.setAttribute (Anforderung .__ MULTIPART_CONFIG_ELEMENT, MULTI_PART_CONFIG); –
Manohar
Einige Dinge beobachtet FormDataContentDisposition.getSize() return -1 Das Hinzufügen eines Filters mit dem multipart-config-Element führt zu einem Fehler java.io.IOException: Fehlender Inhalt für die mehrteilige Anfrage \t at org.eclipse.jetty.util.MultiPartInputStreamParser.parse (MultiPartInputStreamParser.java:494) \t bei org.eclipse.jetty.util.MultiPartInputStreamParser.getParts (MultiPartInputStreamParser.java:402) \t bei org.eclipse.jetty.server.Request.getParts (Request.java:2083) \t bei org.eclipse.jetty.server.Request.getPart (Request.java:2055) – Manohar