Установка ограничений на размер файла при загрузке файлов с помощью Jersey

В настоящее время я реализую функцию для загрузки файлов с помощью джерси-отдыха. Я хотел бы установить максимально допустимый размер файла, который мне кажется довольно распространенным требованием.

Мой первый подход заключался в использовании Jerseys FormDataContentDisposition, который должен содержать всю информацию, которая может мне понадобиться о файле. Но вся информация, кроме имени файла, похоже, отсутствует , включая размер файла.

Это мой способ отдыха :

@POST
@Path("uploadFile/")
@Consumes("multipart/form-data")
@Produces("text/html")
public String handleDocumentUpload(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail)
{
    if(fileDetail.getSize() > MAX_FILE_SIZE)
    {
        throw new IllegalArgumentException(
                "File is to big! Max size is " + MAX_FILE_SIZE);
    }
    // ...more file handling logic
}

Что не работает, поскольку возвращаемый размер всегда равен «-1»!

Я использую чрезвычайно простую HTML-форму для загрузки файла:

<html>
  <head>
    <title>File upload</title>
  </head>
  <body>
 <p>Choose file</p>
 <form enctype="multipart/form-data" method="POST" action="uploadFile">
   <input type="file" name="file" size="50">
   <input type="submit" value="Upload">
 </form>
  </body>
</html>

Итак, теперь к моему вопросу; как бы вы установили ограничение на размер файла с помощью трикотажа? Должен быть какой-то простой способ, не прибегая к чтению всего файла в память (ByteArray), а затем получить текущий размер, верно?

11
задан mattias_avelin 11 November 2011 в 11:41
поделиться