Лучший способ обработать загрузку файлов через HTTP

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

Я пытался сделать что-то вроде предоставления gif-графики, которая представляет собой анимированную графическую панель, но она не дает пользователю никаких сведений о том, сколько загружено. Я даже пытался сделать индикатор прогресса с AJAX, но он всегда был уродлив и никогда не работал правильно.

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

Как вы думаете, что является лучшим способом для загрузки файлов HTTP из HTML? Какие хорошие идеи / примеры вы видели в интернете?

11.12.2008 23:18:21
8 ОТВЕТОВ

Есть ряд клиентских элементов управления, которые можно использовать.

Вы можете

  • Создайте свой собственный элемент управления ActiveX. Только для Windows / IE
  • Используйте Flash, чтобы ставить в очередь файлы и загружать их по одному на сервер, используя стандартный протокол загрузки файлов.
  • Используйте подписанный Java-апплет для загрузки.
  • Написать плагин для браузера.

Несколько случайных ссылок от Google:

http://www.element-it.com/MultiPowUpload.aspx

http://www.codeproject.com/KB/aspnet/FlashUpload.aspx

http://www.dmxzone.com/forum/go/?36564

1
11.12.2008 23:34:43

Существует несколько методов асинхронной передачи файлов с индикатором выполнения по HTTP, большинство из которых включают либо Flash, либо XMLHttpRequest .

1
11.12.2008 23:32:04

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

1
11.12.2008 23:41:45
не кажется мне ужасно грациозным. Он удаляет кнопку, если у них нет JavaScript или Flash. Он не возвращается к управлению загрузкой файлов, как можно было бы ожидать.
Martin Murphy 1.10.2009 05:40:09

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

Обычно это делается путем нацеливания формы загрузки на скрытый iframe и использования вызовов AJAX, чтобы узнать, какая часть файла достигла сервера.

Вот один из примеров этого:

Megaupload

1
12.12.2008 00:28:03

Если вы используете apache mod_perl2, есть модуль Apache2 :: UploadProgress . Это добавляет идентификатор к запросу на загрузку http, после чего вы запрашиваете у сервера ход выполнения этой загрузки. Имеет встроенную поддержку для создания индикатора выполнения AJAX во всплывающем окне или на странице, выполняющей загрузку. Если вы хотите создать свой собственный индикатор прогресса, вы можете получить информацию обратно в виде данных XML или JSON.

0
30.06.2009 17:26:26

Утилита YUI Uploader использует загрузчик основе флэш-, хорошо документировано, и есть несколько примеров для вас попробовать. Я использовал его в нескольких проектах и ​​рекомендую.

0
30.06.2009 17:32:29

Я использую этот для довольно простого и полного инструмента. Базовый исходный код хорош, и вы можете легко настроить его при необходимости. Загрузка файла AJAX

0
30.06.2009 17:40:20

Интересно, что никто не упомянул компонент загрузки NeatUpload от Дина Бреттла , он имеет много интересных функций и работает и на MONO.

0
16.09.2011 12:44:53
Интересно, почему какой-то тролль проголосовал за это? Я против тролля, и я не вижу ничего плохого в ответе.
bgmCoder 27.10.2013 04:14:10