Загрузка большого файла через HTML-форму (более 2 ГБ) - PullRequest
36 голосов
/ 19 февраля 2011

Есть ли способ загрузить файл размером более 2 ГБ, используя простую загрузку HTML-формы?Ранее я загружал большие файлы через silverlight, используя чанки (деление большого файла на сегменты и затем загрузка сегментов один за другим, а затем повторная сборка сегментов на сервере).

Теперь у нас есть требование, что нам просто нужноиспользовать простые HTML (хотя GWT) формы загрузки.Пожалуйста, сообщите мне, если есть какой-либо способ добиться загрузки большого файла таким способом.

Если это невозможно сделать с помощью простого HTML, кто-нибудь может подсказать мне, как я могу разделить и загрузить файл на сегменты, используя flex

Ответы [ 4 ]

38 голосов
/ 01 июня 2012

Используйте HTML5 File API для загрузки больших файлов.который имеет концепцию нарезки, так что вы можете загружать большие файлы.

var reader= new FileReader();
reader.onload=function(e){

//do whatever you want with result
}
var blob = file.slice(startingByte, endindByte);//slicing file
reader.readAsBinaryString(blob);

Учебник FileSystem

Руководство по файловому API

37 голосов
/ 19 февраля 2011

Ограничение размера запросов HTTP POST обычно вообще не относится к HTML.Ограничение больше на стороне сервера.Веб-сервер должен быть настроен на прием таких больших запросов POST.Значение по умолчанию обычно действительно 2 ГБ, и сервер обычно возвращает ошибку HTTP 500 на этом.Предел по умолчанию часто может быть увеличен до 4 ГБ, но все, что выходит за рамки этого, попадет в границы 32-битных систем.В 64-битных системах с 64-битной ОС теоретическая граница намного выше, 16EB.

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

Поскольку HTML является просто языком разметки, он не предлагает никаких средств для разбиения файла.Вам действительно нужно использовать нормальный язык программирования, такой как C # (Silverlight) или Java (Applet), как небольшое приложение, которое вы обслуживаете на своей веб-странице.Очень возможно, что это также возможно с Flash или Flex, но не связывайте меня с этим, поскольку я не делаю ни того, ни другого.

Сказал, что FTP является гораздо лучшим выбором, чем HTTP для передачи (больших) файлов по сети.Я бы пересмотрел выбор использования HTTP для этого.

0 голосов
/ 03 ноября 2018

мы создали веб-приложение (https) (используя django / python), которое загружает объемные файлы в базу данных sqlserver. Для этого мы читаем файл кусками, передаем на сервер через sftp и выполняем массовые вставки в sqlserver. Мы сравнили его с размером файла 1 ГБ, и процесс завершился примерно через 1 минуту.

0 голосов
/ 14 января 2018

Использовать сервер Arivu для внутреннего сервера Java. gradle -> compile 'org.arivu: nioserver: 1.0.3', размер файла без ограничений. Любой размер может быть обработан.

...