Я посмотрел на код Spring CommonsMultipartResolver
.Он использует загрузку файла apache для анализа многочастных данных.CommonsMultipartResolver
установил для буфера по умолчанию пороговое значение 10 КБ и использует DiskFileItemFactory
для создания FileItem.Если поток больше 10 КБ, FileItem
записывается на диск.Вы также можете изменить расположение папки репозитория для хранения временно загруженных элементов файла.
Должно ли быть другое ограничение размера файла, и ограничение общего размера запроса или размер файла является единственным ограничением, и запрос можетзагружать сотни файлов как можно дольше, поскольку они не слишком велики.
Не знаю, какой максимальный предел количества частей в многоэлементных данных, которые вы можете отправить, или предел Spring CommonsMultipartResolver
но поскольку он использует Apache FileUpload, я предполагаю, что они должны быть одинаковыми.Я использовал Apache FileUpload (без Spring) для получения составного потока размером более 3 ГБ, и он состоит из 2 файлов, 20 МБ и 3,6 ГБ.Хотя я не могу дать вам точное ограничение, он должен быть в состоянии обработать несколько гигабайт потока.
Попросите оболочку запроса Spring прочитать полный запрос и сохранить его в динамической памяти JAVA илихраните временные файлы, чтобы иметь возможность использовать большую квоту.
Как я объяснил ранее, CommonsMultipartResolver
использует Apache FileUpload.FileItem
создается с использованием DiskFileItemFactory
, поэтому FileItem
временно сохраняется на диск.Threshol памяти по умолчанию составляет 10 КБ.
Если чтение чтения запроса httpservlet в потоковом режиме изменит ограничение размера, чем использование полного запроса http, считываемого за один раз сервером приложений.
Извините, я не могу ответить на этот вопрос.В чем разница между запросом httpservlet при потоковой передаче и запросом http, читаемым одновременно:
В чем узкое место этого процесса - размер кучи Java, квота файловой системы, на которой работает мой веб-сервер, максимально допустимый размер BLOB, который позволяет база данных, в которой я собираюсь сохранить файл?или внутренние ограничения Spring?
Общая скорость горловины бутылки может быть отсортирована в следующем порядке: Сеть <Файловый ввод-вывод <Память </p>
Размер кучи Java можно изменить до запуска контейнера сервлета.,2 ^ 64 - теоретический предел для JVM 64 бит.
Для квоты файловой системы это зависит от файловой системы, например, FAT32 позволяет иметь максимальный размер файла 4 ГБ, NTFS 16 ТБ, EX3 16 ГБ-2 ТБ и т. Д.
В соответствии с ibm ограничение BLOB должно составлять 2 ГБ.
Я не знаю внутреннего предела Spring.Но Apache FileUpload может без проблем обрабатывать несколько ГБ потока.