Загрузить большие файлы через веб-страницу - PullRequest
3 голосов
/ 10 апреля 2010

Каким способом лучше всего разрешить пользователям загружать большие файлы оттуда в веб-браузер на сервер.Я говорю 200MB + возможно до нескольких гигатей.Я думал о нескольких возможных решениях проблемы (еще не пробовал их), и это в основном то, что я придумал.Скорость загрузки с сервера не будет проблемой, но подключение пользователей возможно может.

Наличие некоторого апплета на стороне клиента, написанного на Java или Flash, который отправляет файл по частям (это возможно с помощью апплета)скрипт php / other на сервере и контрольная сумма + некоторая другая информация о файле.На серверных сценариях все части и информационный файл сохраняются во временном каталоге, который имеет уникальное имя на основе контрольной суммы файла и IP-адреса пользователя.Когда последний блок отправляется, апплет посылает на сервер сигнал о том, что он завершен, и сервер собирает файл в нужном месте.Если блок не совпадает с контрольной суммой для этой части, сервер отправит апплету ответ с предложением перезагрузить этот блок.Я не знаю, насколько важна проверка контрольной суммы, так как все tcpackages, кто-то с большим количеством знаний может ответить на этот вопрос.

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

Используйте менеджер загрузки, который делает почти то же самое, что и апплет, о котором я упоминал выше.

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

Другим способом может быть комбинация двух.Допустим, апплет для больших или более файлов и простой ввод, который может быть ограничен до 10-20 МБ для файлов меньшего размера и совместимости.

Возможно, есть и другие, более разумные способы решения этой проблемы, и поэтому я прошу совета здесь по SO.

Ответы [ 3 ]

2 голосов
/ 11 апреля 2010

Лучше всего использовать для этого Java-апплет. Я ненавижу говорить «Использовать Java», потому что это такое ужасное решение (кому на самом деле нравится посещение страницы и просмотр логотипа Java?). С другой стороны, вы можете разбивать файлы на куски и загружать их одновременно. Он кроссплатформенный, и как только он запустится, он может быть чертовски быстрым. Поскольку он работает в JVM, вы также не оказываете нагрузку на браузер, как это делает Flash. Очевидно, вы можете легко добавить показатели прогресса и еще много чего.

Кроме того, я предполагаю, что, поскольку пользователю разрешено публиковать такие огромные файлы, вы каким-то образом гарантируете, что они являются действительными пользователями (например, это не просто загрузка какого-то идиота, как случайный файл 1 ГБ письма) и что они не просто нападают на ваш сайт. С Java вы также можете выполнить небольшую проверку на стороне клиента, чтобы убедиться, что они законные пользователи. Не то, чтобы вы не могли сделать это с Flash, но кажется, что это более интуитивно понятно в Java. Вы также можете зашифровать файлы, сжать их с помощью GZip или Deflate, чтобы сэкономить пропускную способность.

Удачи

1 голос
/ 11 апреля 2010

Для ограниченного круга пользователей идея, с которой я играю, - но еще не реализовала - использует Rightload в качестве инструмента для загрузки файлов клиентами. Это отличный бесплатный (но, по-видимому, не с открытым исходным кодом) FTP-загрузчик «для правого клика» для Windows, который довольно легко настроить. Также кажется, что можно легко отправлять предварительно заданные профили XML для FTP-сервера пользователя.

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

1 голос
/ 10 апреля 2010

Ну, я не знаю, какой у вас доступ к вашему серверу, но вы можете создать файл .htaccess, который позволяет загружать огромные файлы только для одной страницы / файла. Что касается порции, я не думаю, что вы можете сделать это с помощью Flash Player. (В любом случае, вы не можете получить доступ к необработанным байтам со стороны клиента.)

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