Запросить ограничение размера при использовании MultipartHttpServletRequest из Spring 3.0 - PullRequest
4 голосов
/ 29 декабря 2010

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

  1. Должно ли быть другое ограничение размера файла, и ограничение общего размера запроса или размер файла является единственным ограничением, и запрос может загружать сотни файлов как длинные, так как они не слишком велики.
  2. Попросите оболочку запроса Spring прочитать полный запрос и сохранить его в памяти кучи JAVA или сохранить временные файлы, чтобы иметь возможность использовать большую квоту.
  3. Используется ли чтениезапрос httpservlet при потоковой передаче изменил бы ограничение размера, чем использование полного http-запроса, считываемого за один раз сервером приложений.
  4. Что является узким местом этого процесса - размер кучи Java, квота файловой системы, в которой мойвеб-сервер работает, максимально допустимый размер BLOB, который позволяет база данных, в которой я собираюсь сохранить файл?или внутренние ограничения Spring?

Связанные темы, на которые пока нет точного ответа:

1 Ответ

2 голосов
/ 01 января 2011

Я посмотрел на код 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 может без проблем обрабатывать несколько ГБ потока.

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