Каков наилучший способ загрузить файл через HTTP POST с помощью веб-формы? - PullRequest
5 голосов
/ 15 августа 2008

В принципе, что-то лучше, чем это:

<input type="file" name="myfile" size="50">

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

Во-вторых, нет индикатора прогресса, показывающего, сколько файлов загружено. Обычно вам нужно реализовать какой-либо способ на стороне клиента отключить несколько отправок (например, изменить кнопку отправки на отключенную кнопку с надписью «Отправка формы ... пожалуйста, подождите.») Или высветить гигантское предупреждение.

Есть ли хорошие решения для этого, которые не используют Flash или Java?

Яаков : Этот продукт выглядит как раз то, что я ищу, но его стоимость составляет 1000 долларов США и специально для него ASP.NET. Существуют ли какие-либо проекты с открытым исходным кодом, которые охватывают такую ​​же или аналогичную функциональность?

Ответы [ 4 ]

9 голосов
/ 15 августа 2008

Ящики для загрузки файлов - это то, где мы сейчас находимся, если вы не хотите использовать другие технологии, такие как Flash, Java или ActiveX.

С простым HTML вы в значительной степени ограничены описанным опытом (без индикатора выполнения, двойной отправки и т. Д.). Если вы хотите использовать некоторый JavaScript, вы можете решить некоторые из проблем, предоставив отзыв о том, что идет загрузка, и даже , показывающий ход загрузки (это взлом, потому что вам не нужно это делать полный обход до сервера и обратно, но по крайней мере это работает).

Если вы хотите использовать Flash (который доступен практически везде и на многих платформах), вы можете решить практически все эти проблемы. Быстрый поиск в Google показал два таких компонентов, оба из них и с открытым исходным кодом. Я никогда не использовал ни одного из них, но они хорошо выглядят. Кстати, Flash тоже не без проблем, например, при использовании многофайловой программы для загрузки слайдов, браузер постоянно зависал на мне: - (

Вероятно, лучшее решение в настоящее время - динамически определять, есть ли у пользователя Flash, и, если это так, дать ему версию загрузчика для флэш-памяти, в то же время позволяя выбрать базовую версию HTML.

НТН

1 голос
/ 15 августа 2008

Проблема здесь в том, что браузеры специально работают, чтобы блокировать все, что изменяет базовый элемент управления загрузкой файлов. Вы не можете изменить его, например, с помощью JavaScript.

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

В настоящее время существуют различные обходные пути, но они различаются между IE и FX (я не знаю о Safari, Opera и т. Д.).

Посмотрите, что http://www.gmail.com делает в IE и FX, когда вы прикрепляете что-либо к электронному письму.

Я хочу увидеть эту мусорную кнопку «Обзор» - она ​​говорит мне, что я не пропускаю ничего неожиданного.

1 голос
/ 15 августа 2008

Вы можете взглянуть на скрипт Fancy Upload . Хотя он использует вспышку, он все равно выглядит великолепно.

0 голосов
/ 15 августа 2008

Это правда, контроль загрузки файлов определенно отстал. Надеемся, что это будет решено в будущей версии asp.net.

Хотя это стоит некоторых денег, я обнаружил, что Telerik upload имеет все функции, которые вы ищете, включая стили и обновления прогресса (он также оптимизирует память для больших загрузок).

...