В общем, что-то получше этого:
<input type="file" name="myfile" size="50">
Прежде всего, кнопка browse
выглядит по-разному в каждом браузере. В отличие от кнопки submit
на форме, вам придется придумать какой-нибудь hack-y способ ее стилизации.
Во-вторых, нет индикатора прогресса, показывающего, какая часть файла загружена. Обычно приходится реализовывать какой-то способ на стороне клиента для отключения многократной отправки (например, заменить кнопку отправки на отключенную кнопку, показывающую "Form submitting... please wait.") или выводить гигантское предупреждение.
Есть ли хорошие решения для этого, не использующие Flash или Java?
Yaakov: Этот продукт выглядит именно тем, что я ищу, но его стоимость составляет $1000 и он предназначен специально для ASP.NET.
Есть ли проекты с открытым исходным кодом, которые охватывают ту же или подобную функциональность?
Если вы не хотите использовать другие технологии, такие как Flash, Java или ActiveX, то это то, на чем мы сейчас остановились.
При использовании обычного HTML вы практически ограничены описанным вами опытом (нет индикатора выполнения, двойная отправка и т.д.). Если вы хотите использовать javascript, вы можете решить некоторые проблемы, давая обратную связь о том, что загрузка идет, и даже показывая прогресс загрузки (это хак, потому что вы не должны делать полный обход до сервера и обратно, но, по крайней мере, это работает).
Если вы хотите использовать Flash (который доступен практически везде и на многих платформах), вы можете преодолеть практически все эти проблемы. Быстрый поиск в гугле выявил дватаких компонента, оба бесплатные и с открытым исходным кодом. Я никогда не использовал ни один из них, но выглядят они неплохо. BTW, Flash тоже не без проблем, например, при использовании многофайлового загрузчика для слайд-обмена, браузер постоянно падал :-(
Вероятно, лучшим решением на данный момент является динамическое определение того, есть ли у пользователя Flash, и если это так, дать ему флеш-версию загрузчика, сохраняя возможность выбора базовой HTML-версии.
HTH
Вы можете взглянуть на скрипт Fancy Upload. Хотя в нем используется flash, он все равно выглядит великолепно.
Проблема здесь состоит в том, что браузеры конкретно работают, чтобы заблокировать что-либо, что изменяет основной входной контроль за закачкой файла. Вы can' t изменяют его с JavaScript, например.
Причина - безопасность - если я мог сценарий это, я мог бы построить страницу, которая, когда Вы посетили его, послала мне различные файлы из Вашего жесткого диска. Не хороший.
Есть различные искусственные приемы в данный момент, но they' ре, отличающееся между IE и FX (я don' t знают о Сафари, Opera, и т.д.).
Посмотрите на какой < http://www.gmail.com> делает в IE и FX, когда Вы прилагаете что-то к электронному письму.
Я хочу видеть тот мусор " Browse" кнопка - это говорит мне это I' m не позволяющий чему-либо неожиданному в.
Это правда, элемент управления загрузкой файлов определенно отстает от времени. Надеюсь, это будет исправлено в будущей версии asp.net.
Хотя он стоит определенных денег, я нашел Telerik upload control, который обладает всеми функциями, которые вы ищете, включая стилизацию и обновление прогресса (он также оптимизирует память для больших загрузок).