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

StackOverflow https://stackoverflow.com/questions/11974

Вопрос

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

<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.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top