request.getContentLength() возвращает 0, если размер файла превышает 2 ГБ

Использование загрузки файла в моем проекте как:

 <s:form id="uploadData" action="UploadAction" namespace="xyz"   validateFields="false" method="post"    enctype="multipart/form-data">

Но метод request.getContentLength() возвращает правильное значение для менее чем 2 ГБ и 0 для всего, что выше него.

Вероятной причиной является тип данных длины содержимого как int. Есть ли другой способ, где параметр request: content-length может быть преобразован в тип long для поддержки загрузок размером более 2 ГБ.

Пожалуйста, расскажите нам, как преобразовать заголовок запроса длины контента в long, чтобы поддерживать загрузку файлов более 2 ГБ.

1 ответ

Это потому, что метод getContentLength() в API сервлета определяется как int, На самом деле, он должен вернуться -1 для файлов (запросов) больше 2gb.

Если вы используете Servlet API 3.1 (например, Tomcat 8), вы можете использовать метод getContentLengthLong().

Другие вопросы по тегам