Загрузка очень больших (огромных) файлов

BigHarry

Новичок
Нужно с клиента на сервер (внутри локальной сети) передавать гигантские файлы (до 20Gb один файл) размером!
С фтп не получится (пользователь полный ноль), плюс надо вместе с файлом на сервер передать кучу данных с вэб-формы, которые потом запишутся в мыскль, а гигантский файл ляжет рядом, в общем - нужно что бы все это было организовано через браузер с формочкой. Конечно, необходим прогресс-бар, что бы юзер, взглянув на него, спокойно мог определить - хватит-ли ему времени сходить на обед, пока на сервер заливается весь этот бред.
Покопавшись тут в поиске не нашел решения для задачи, сплошной пессимизм по этому поводу - но большинство топиков по аналогичным проблемам созданы более года назад, может за то время, что прошло, технологии шагнули далеко вперед и Апач с PHP без особых заморочек смогут принимать по http такие огромные файлы?
Или надо забыть про http и на Сях писать демона на сервер, и форму для клиента, что бы потихоньку все это через сокеты пихать? Может кто решал подобную задачу и подскажет инструменты? Все же очень хочется запрограмить это через PHP...
 

AmdY

Пью пиво
Команда форума
BigHarry
чисто теоретически.... попробуй через флешовый загрузчик. только не забудь в пыхе настройки на большой файл и пост выставить
 

BigHarry

Новичок
Ты про Swfupload? Где-то попадалась инфа, что он более 2Gb (или 4Gb) не отдает, типа какое-то ограничение флэша, что-то с 32-х битностью связано.
Но надо будет попробовать, хотя нарыл еще JFileUpload - там он вроде как кусками (chunk) может заливать, но этот JFileUpload, зараза, платный...
 

vovanium

Новичок
Покопать в сторону HTML5 File API или Silverlight, основной плюс что можно кусками читать файл, так что возможно меньше зависимы от размеров, и не нужно весь файл в оперативку загружать
вот загрузчик который умеет разные варианты юзать попробуй
http://lwu.no-ip.org/
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
> сплошной пессимизм
:))) да все хорошо, не волнуйся, можно и на php - вон, phpdaemon есть
 

BigHarry

Новичок
Множественная загрузка не нужна, задача загрузить один огромный файл и метаданные для него пихнуть в базу.
Сильверлайт стремно, так как маячит перспектива перехода с ператки на СПО и отказ от виндоуз в виду скудности бюджета, а приживлять к линухам сильверлайт, как я понял - это дополнительный секас, там вроде какой-то мунлайт вместо сильвера надо использовать. В общем - решения на Яве более предпочтительны, канечно...
 

vovanium

Новичок
В моем ответе не только Silverlight, а хром функционирует и на маках и на линухах
 

BigHarry

Новичок
vovanium
Подскажи, uploader.core.js - этого будет достаточно? Я в яве-скрипте не понимаю.
Как его подключить?
На сайте в примерах везде встречается сервелайт, у меня эти примеры не работают - файл дает выбрать, а по нажатию на аплод - ничего не происходит.
 

BigHarry

Новичок
Пробовал на Опере, но несмотря на заявленную поддержку HTML5 - Опера не все фишки этой спецификации походу поддерживает. А вот через гугль-хром вроде работает аплоадинг...
 

iceman

говнокодер
зачем на сервер такие данные заливать? что за данные?
 

vovanium

Новичок
Почему все забыли простое и очевидное решение?

CGI.
А каким боком CGI к браузеру? Тут проблема в том, чтобы именно браузером передать очень большой файл (20 гиг это если локалка 100 мбит, получится около получаса), поэтому вполне логичны решения на File API за счет того что умеют читать файлы на стороне клиента по частям, либо что-то на Java делать.
 

jrip

Новичок
На моей памяти подобная задача решалась с помощью java апплета и фтп.
Сразу решается проблема с докачкой, прогресс баром и т.п.
Также, я думаю, существует масса готовых апплетов для подобных задач,
так что и писать возможно ничего не придется.
 

MildMildMint

Новичок
vovanium боитесь, что связь порвется? У меня такое раз в месяц, к примеру.
 

fixxxer

К.О.
Партнер клуба
если нужна докачка гигабайтных файлов, то file api или silverlight. все.

нету ни того ни другого - нету докачки. фигли там.
 

vovanium

Новичок
vovanium боитесь, что связь порвется? У меня такое раз в месяц, к примеру.
Там проблема не в связи, а в том что браузеры и серверы насколько попадалась инфа файлы сначала пишут в память (ну просто никто не предполагал что с их помощью будут кидаться файлы по десятку гиг), даже для File API + nginx нужно ставить расширение для nginx, которое как раз умеет более оптимально с большими файлами работать. Да и вообще есть куча нюансов когда речь идет о файлах размер которых превышает int32.
 

BigHarry

Новичок
Попробую для начала все таки через JFileUpload - у проекта вменяемая документация, отзывчивый суппорт и судя по сообщениям форума вроде как есть суксесс-стори с аплоадом гигабайтных файлов. Передавать гигантоз буду через http, разбитым на чанки, при этом не придется особо ковырять php.ini и апачные настройки со всякими таймаутами и мемори-лимитами...
 

newARTix

Новичок
не "торент-трекер" случайно мутите? Мне лично загрузка десятков гигабайт через http видится черезвычайно костыльной. Ну не для этого протокол делался. Гигабайты еще как-то научились пропускать, но десятки гигабайт это уже просто издевательство над техникой и ПО. Насчет "нельзя FTP" и "пользователь полный ноль", есть очень простое решение: если винда, то делается ярлык (можно временный логин и пароль) для доступа к ФТП. Винда нативно открывает фтп как папки, и юзер просто закидывает файло в свою временную папку.
Да, геморнее для юзера, чем заливка через браузер, но в мильён раз проще для разработчика.
А если речь всё-таки про обменники, то там сотни своих решений, наверное.

Да, можно конечно сделать передачу частями... но это уже уровень приложения.
 

BigHarry

Новичок
не "торент-трекер" случайно мутите?
Нее, трекеру не нужен аплоад больших файлов, он же только отслеживает и координирует - там маленькие.
Надо замутить передачу видеоматериалов на хранилище (кабельное ТВ), а поскольку видео хранится в несжатом виде - отсюда такие объемы.
Через ФТП еще не хочется по другой причине - помимо заливки большого файла необходимо сохранить в б/д всякие метаданные, описывающие этот видеоматериал для системы поиска. Поэтому нужно передать файл и в случае успеха - запостить на этот же сервер данные, которые пользователь написал в полях ввода. И вот как раз JFileUpload может после успешной загрузки сделать дополнительно POST или GET.
 
Сверху