2009-08-09 3 views
5

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

Существует ли какой-либо кросс-браузерный способ проверки размера файла перед его загрузкой на сервер. Я использую управление загрузкой файлов asp.net.

Я нашел некоторые элементы управления сторонних сделать этот чек:

http://ajaxuploader.com/Demo/simple-upload.aspx

и

http://demo.essentialobjects.com/Default.aspx?path=AJAXU

, но как?

+1

Элементы управления, которые вы нашли, используют флешку :) посмотрите на js. Они встраивают swf-файлы. – redsquare

ответ

4

Раньше единственный способ определить размер файла перед тем, как файл был отправлен серверу, заключался в том, что на клиентских плагинах/надстроек были более толстые, чем javascript. Они должны быть установлены в клиентской системе. Например. используя SWFUpload, Java-апплеты, элементы управления ActiveX.

Теперь вы можете использовать HTML5 File API, т.е .:

var size = document.getElementById('myfile').files[0].size; 
+0

выглядит как копия моего ответа! – redsquare

+0

@redsquare, я добавил ваш «swfupload» в качестве одного из примеров. +1 для этого. :-) –

+0

@ o.k.w вы можете отправить образец кода? –

4

Это теперь возможно с HTML5 в API Файл:

<script> 
    var myFile = document.getElementById('myFile'); 
    var size; 
    myFile.addEventListener('change', function() { 
     size = this.files[0].size; 
    }); 
</script> 

Это поддерживается most of the latest browsers.

Internet Explorer поддерживает this workaround с использованием ActiveX, но для этого требуется понизить настройки безопасности Internet Explorer, поэтому на самом деле это не вариант для большинства приложений.

Требуется больше работы, но используйте Flash-загрузчик, например SWFUpload, если вам действительно нужно сделать это в IE9 или ниже. IE10 (надеюсь) добавит поддержку API файлов HTML5.

+0

Обходное решение IE можно свести к следующему: «Отключите всю систему безопасности и немедленно получите доступ к ПК.) IE10 предлагает API-интерфейс HTML5. – EricLaw