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