Есть ли способ указать размер файла MAX по типу файла? - PullRequest
0 голосов
/ 06 апреля 2019

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

Например, от 10 МБ до файлов .pdf, от 100 МБ до файлов .mp4, от 500 МБ до файлов .zip и т. д. *

На данный моментЯ получил это в моем application.properties :

spring.servlet.multipart.max-file-size=100MB

Но он просто назначил 100 МБ для каждого возможного файла .

Любая идея, как яможете это реализовать?


Спасибо за помощь!

1 Ответ

0 голосов
/ 06 апреля 2019

Вы можете использовать свой собственный многочастный обработчик, который позволяет программно устанавливать максимальный размер загрузки. Например, используя ServletFileUpload в вашем контроллере:

DiskFileItemFactory factory = new DiskFileItemFactory(thresholdBytes, tempDir);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(maxFileSize);

for (FileItem item : upload.parseRequest(request)) {
    // Save the file
    File uploadedFile = new File(myPath);
    item.write(uploadedFile);
}

Для большего контроля над обработкой потока вы можете использовать item.getInputStream() и передавать байты, используя собственную потоковую логику.

Чтобы использовать это, вам нужно либо отключить стандартную обработку Spring по умолчанию с помощью spring.servlet.multipart.enabled = false, либо spring.servlet.multipart.resolve-lazily = true.

Второй вариант состоит в том, чтобы зарегистрировать несколько сервлетов, каждый из которых обрабатывает свой тип файла, и определить разные @MultipartConfig (с указанием maxFileSize и maxRequestSize) для каждого. Затем выполните внутреннее перенаправление на сервлет для конкретного типа файла из вашего главного сервлета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...