Я использую Dropwizard 0.7.0 для создания API для загрузки файлов. Исправлена ошибка проверки размера загруженного файла. Я хочу, чтобы проверить размер перед записью файла на дискКак найти размер файла, загруженного с помощью Dropwizard REST API
@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();
.........
}
он выдает ошибку:
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
Модернизированный dropwizard 0.8.0 однако врезался в другую ошибку
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
Использование этих зависимостей
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-forms</artifactId>
<version>${dropwizard.version}</version>
</dependency>
и
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>2.23.2</version>
</dependency>
добавил
bootstrap.addBundle(new MultiPartBundle());
и это тоже (после первой неудачи)
env.jersey().register(MultiPartFeature.class);
что мне здесь не хватает?
мне нужно использовать версию 0.7.0 и зависимость на месте com.sun.jersey.contribs Джерси-многочастному 1.18.1 Хотя размер проверка не может быть выполнена, я могу загрузить файл. Я также попытался установить многострочный элемент конфигурации в фильтр final MultipartConfigElement MULTI_PART_CONFIG = new MultipartConfigElement ("", 102400, -1L, -1); ServletRequest.setAttribute (запрос .__ MULTIPART_CONFIG_ELEMENT, MULTI_PART_CONFIG); –
Manohar
Наблюдаемая парочка вещей FormDataContentDisposition.getSize() return -1 Добавление фильтра с элементом multipart config вызывает ошибку java.io.IOException: Отсутствует содержимое для многостраничного запроса \t на org.eclipse.jetty.util.MultiPartInputStreamParser.parse (MultiPartInputStreamParser.java:494) \t на org.eclipse.jetty.util.MultiPartInputStreamParser.getParts (MultiPartInputStreamParser.java:402) \t в org.eclipse.jetty.server.Request.getParts (Request.java:2083) \t на org.eclipse.jetty.server.Request.getPart (Request.java:2055) – Manohar