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

По сути, что-то лучше этого:

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

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

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

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

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

Ответов (4)

Решение

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

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

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

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

HTH

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

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

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

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

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

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

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

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