В основном, что-то лучше, чем это:
<input type="file" name="myfile" size="50">
Прежде всего, browse
кнопка выглядит по-разному в каждом браузере. В отличие от submit
кнопки на форме, вы должны придумать какой - нибудь хакерский способ ее оформления.
Во-вторых, нет индикатора прогресса, показывающего, сколько файлов загружено. Обычно вам нужно реализовать какой-либо способ на стороне клиента, чтобы отключить несколько отправок (например, изменить кнопку отправки на отключенную кнопку, показывающую «Отправка формы ... пожалуйста, подождите.») Или высветить гигантское предупреждение.
Есть ли хорошие решения для этого, которые не используют Flash или Java?
Яаков : Этот продукт выглядит как раз то, что я ищу, но его стоимость составляет 1000 долларов, и это специально для. ASP.NET.
Существуют ли какие-либо проекты с открытым исходным кодом, которые охватывают такую же или аналогичную функциональность?
Ящики для загрузки файлов - это то, где мы сейчас находимся, если вы не хотите использовать другие технологии, такие как Flash, Java или ActiveX.
С простым HTML вы в значительной степени ограничены описанным опытом (без индикатора выполнения, двойной отправки и т. Д.). Если вы хотите использовать некоторый JavaScript, вы можете решить некоторые из проблем, предоставив отзыв о том, что загрузка идет, и даже показывая прогресс загрузки (это взлом, потому что вам не нужно делать полный обход сервер и обратно, но хотя бы работает).
Если вы хотите использовать Flash (который доступен практически везде и на многих платформах), вы можете решить практически все эти проблемы. Быстрый поиск в Google показал два таких компонента, оба из которых бесплатны и имеют открытый исходный код. Я никогда не использовал ни одного из них, но они хорошо выглядят. Кстати, Flash тоже не без проблем, например, при использовании многофайловой программы для загрузки слайдов браузер постоянно зависал на мне :-(
Вероятно, лучшим решением на данный момент является динамическое обнаружение, если у пользователя есть Flash, и, если это так, дайте ему версию флэш-загрузчика, в то же время позволяя выбрать базовую версию HTML.
НТН
Это правда, контроль загрузки файлов определенно отстал. Надеемся, что это будет решено в будущей версии asp.net.
Несмотря на то, что это стоит денег, я обнаружил, что элемент управления загрузкой Telerik обладает всеми необходимыми функциями, включая стилизацию и обновления прогресса (он также оптимизирует память для больших загрузок).
Вы можете взглянуть на скрипт Fancy Upload . Хотя он использует вспышку, он все равно выглядит великолепно.
Проблема здесь в том, что браузеры специально работают, чтобы блокировать все, что изменяет базовый элемент управления загрузкой файлов. Вы не можете изменить это с помощью JavaScript, например.
Причина в безопасности - если бы я мог написать сценарий, я мог бы создать страницу, которая при посещении сайта посылала мне различные файлы с вашего жесткого диска. Не хорошо.
В настоящее время существуют различные обходные пути, но они различаются между IE и FX (я не знаю о Safari, Opera и т. Д.).
Посмотрите, что http://www.gmail.com делает в IE и FX, когда вы прикрепляете что-либо к электронному письму.
Я хочу видеть эту мусорную кнопку «Обзор» - она говорит мне, что я не пропускаю ничего неожиданного.