Загрузка файла REST API Джерси - Null InputStream для известных mimetypes - PullRequest
0 голосов
/ 17 июня 2020

У меня есть REST API для загрузки файлов, реализованный с использованием Джерси. Параметр InputStream может иметь значение NULL в зависимости от расширения загруженного файла. Обычно я хочу обрабатывать файлы csv, которые проходят как нулевые.

  @POST
  @Consumes(MediaType.MULTIPART_FORM_DATA)
  @Path("/upload")
  public Response upload(@FormDataParam("file") InputStream fileInputStream, 
      @FormDataParam("file") File file,
      @FormDataParam("file") FormDataContentDisposition content,
      @FormDataParam("filename") String filename)
  {
    if(LOG.isDebugEnabled()) { LOG.debug("Received file named " + filename); }
    if(LOG.isDebugEnabled()) { LOG.debug("InputStream is " + (fileInputStream == null ? null : fileInputStream.toString())); }
    if(LOG.isDebugEnabled()) { LOG.debug("File is " + (file == null ? null : file.toString())); }
    if(LOG.isDebugEnabled()) { LOG.debug("Disposition is " + (content == null ? null : content.toString())); }
    return Response.ok().build();
  }

Я загружаю образец файла. Если файл назван «test-data», то вывод будет:

2020-06-12 14:44:08,618 DEBUG http-nio-8080-exec-22 my.RestResource:65 - Received file named test-data
2020-06-12 14:44:08,619 DEBUG http-nio-8080-exec-22 my.RestResource:66 - InputStream is org.jvnet.mimepull.DataHead$ReadMultiStream@57392c2d
2020-06-12 14:44:08,620 DEBUG http-nio-8080-exec-22 my.RestResource:67 - File is /tmp/tomcat8-tomcat8-tmp/rep5012110996391644259tmp
2020-06-12 14:44:08,620 DEBUG http-nio-8080-exec-22 my.RestResource:68 - Disposition is form-data; filename="test-data"; name="file"

Если я теперь переименую тот же файл образца как «test-data.csv», то результат будет:

2020-06-12 14:46:23,559 DEBUG http-nio-8080-exec-21 my.RestResource:65 - Received file named test-data.csv
2020-06-12 14:46:23,560 DEBUG http-nio-8080-exec-21 my.RestResource:66 - InputStream is null
2020-06-12 14:46:23,560 DEBUG http-nio-8080-exec-21 my.RestResource:67 - File is /tmp/tomcat8-tomcat8-tmp/rep7178313283736460129tmp
2020-06-12 14:46:23,560 DEBUG http-nio-8080-exec-21 my.RestResource:68 - Disposition is form-data; filename="test-data.csv"; name="file"

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Мой класс написан как плагин для продукта, реализующего фреймворк, поэтому есть уровень конфигурации и фильтров, которые я не контролирую и, возможно, перехватывает загруженный файл и вызывает это, но я могу ' t найти в базе кода какие-либо ссылки на mimetypes или проверки расширений. Любые подсказки о том, где это можно контролировать, помогут мне сузить круг поиска.

Спасибо.

...