2010-08-30 4 views
9

Чтобы увеличить пользовательский интерфейс, я хотел бы предупредить пользователя о том, что файл слишком большой (допустим,> 8M) перед отправкой всего файла (что может занять некоторое время к размеру и клиентскому соединению). Все типы полей могут быть «предварительно проверенными» на стороне клиента для лучшего пользовательского опыта, но я застрял в проблеме с размером файла.Предупреждать пользователя, что файл слишком большой, перед загрузкой

Есть ли решение этой проблемы?

[edit] Я также открыт для APC для PHP, в котором есть rfc 1867. Я не уверен, что можно отменить загрузку формы, если мы обнаружим, что размер слишком велик. Я, безусловно, награжу награду, если кто-нибудь покажет мне, как это сделать.

ответ

6

Как насчет этого пользователя, основанного на Flash? http://swfupload.org/

Это кажется убедительным

  • Ухудшает грациозно к нормальной форме HTML загрузки, если флэш или Javascript недоступен
  • Control Filesize перед загрузкой начинается

Поскольку это с открытым исходным кодом, если вы заинтересованы вы может сочетать изящное ухудшение с другими решениями HTML5 и IE только для большинства установок браузера: http://code.google.com/p/swfupload/

+1

+1 для SWFUpload. Несмотря на flash-характер (даже если у всех есть поддержка Flash ...), это единственный богатый полнофункциональный компонент, который я нашел несколько лет назад (это подписанный Java-апплет ...), который отлично работает и не работает накладывать предопределенный пользовательский интерфейс. Вы также должны добавить, что SWFUpload имеет контроль за ходом загрузки, может одновременно выбирать несколько файлов и имеет очередь загрузки с возможным ограничением по размеру и т. Д. –

+0

+1 и он работает во всех основных браузерах и имеет широкий спектр обработчиков обратного вызова! –

2

Вот простое решение этой

http://www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html

изменить его, чтобы соответствовать вашим потребностям

но остерегайтесь сообщалось, что он не работает в некоторых браузерах, это, возможно, потребуется некоторое изменения.

+2

Будет работать только в IE7 и ниже. –

+0

Да, это работает только в IE. Как насчет Firefox, Opera, Chrome и Safari? – Savageman

5

Вы можете использовать API файлов в новых браузерах, которые не являются IE 9 или более ранними. Я нашел этот учебник с некоторыми Googling: http://www.html5rocks.com/tutorials/file/dndfiles/

Кроме того, ссылка MDC здесь: https://developer.mozilla.org/en/DOM/File

К сожалению, я не думаю, что есть способ во всех версиях IE. Ответ Flakron охватывает 6 и 7, это звучит, но я не уверен в 8, и я не знаком с IE API. Вам, вероятно, понадобится использовать плагин на основе uploder (Flash, Silverlight или Java).

+0

Плагины имеют «сильные» зависимости. Я хотел бы избежать этого, если это возможно.Тем не менее, Flash-загрузчик не будет плохим решением (конечно, с резервным для «классического» ввода файла). – Savageman

+0

В http://www.html5rocks.com/tutorials/file/dndfiles/ есть вход для демонстрационного файла. Проверено правильно и работает также с IE10 (Windows7), поэтому кажется, что это рекомендуемый способ для текущих и, в частности, в будущих продуктах. –

1

Есть ли решение этой проблемы?

Я думаю, вы в конце концов сожалеете о выборе «слишком большого» размера, чтобы предупредить об этом, потому что скорость передачи - это реальное определение пропускной способности.

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

+0

Как вы узнали, что расчетное время до завершения в HTML с помощью HTTP-загрузки? Сервер не знает, насколько большой файл, пока браузер не завершит загрузку всего файла? –

+0

Если у него нет реального «слишком большого» на бэкэнде. – Joshua

+0

Да, HTML-контроль загрузки HTTP не является приятным графическим интерфейсом. Попробуйте http://www.google.com/search?q=upload+progress –

Смежные вопросы