Многокомпонентная потоковая передача в Джерси без буферизации диска на принимающем сервере

Я пытаюсь передавать (большие) файлы через HTTP в базу данных. Я использую Tomcat и Джерси как Webframework. Я заметил, что если я отправляю файл в свой ресурс, файл сначала буферизуется на диске (в temp\MIME*.tmp}, прежде чем он будет обработан в моем методе doPOST.

Это действительно нежелательно. поведение, так как это удваивает дисковый ввод-вывод, а также приводит к несколько плохому UX, потому что, если браузер уже закончил загрузку, пользователю нужно подождать несколько минут (конечно, в зависимости от размера файла), пока он не получит ответ HTTP.

Я знаю, что это, вероятно, не лучшая реализация загрузки больших файлов (поскольку у вас даже нет возможности возобновления), но требования тоже. :/

Итак, мой вопрос: есть ли способ отключить (дисковую) буферизацию для MULTIPART POST. Буферизация памяти, очевидно, слишком дорогая, но я все равно не вижу необходимости в дисковой буферизации? (Объясните, пожалуйста) Как крупные сайты, такие как YouTube, справляются с этой ситуацией? Или есть хотя бы возможность дать пользователю немедленную обратную связь, если файл будет отправлен? (Должно быть плохо, так как все еще может быть что-то вроде SQLException)

6
задан Ondra Žižka 15 December 2017 в 11:52
поделиться