Предупредить пользователя, что файл слишком велик перед загрузкой - PullRequest
9 голосов
/ 30 августа 2010

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

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

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

Ответы [ 4 ]

6 голосов
/ 08 сентября 2010

Как насчет этого загрузчика на основе Flash? http://swfupload.org/

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

  • Изящно понижается до обычной формы загрузки HTML, если Flash или javascript недоступны
  • Контроль размера файла перед началом загрузки

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

5 голосов
/ 03 сентября 2010

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

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

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

2 голосов
/ 30 августа 2010

Вот простое решение для этого

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

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

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

1 голос
/ 08 сентября 2010

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

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

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

...