Проверяйте размер перед загрузкой

У меня есть веб-сайт, который позволяет пользователям загружать видеофайлы, но я хочу ограничить размер файла до 2 МБ, это довольно просто после загрузки файла, но кто-нибудь знает, могу ли я проверить размер файла перед загрузкой чтобы не перегружать сервер без надобности?

Возможно, я ищу решение для javascript/ajax, но я понятия не имею, как этого добиться.

Любая помощь будет очень кстати. Спасибо ребята!

ОБНОВЛЕНИЕ:

Мне нужно проверить размер файла на на стороне клиента, а НЕ на на стороне сервера, возможно ли это?


person Pedro Lobito    schedule 20.08.2011    source источник


Ответы (2)


Вы можете читать локальные файлы в JavaScript, используя file reader в HTML5:
http://www.html5rocks.com/en/tutorials/file/dndfiles/

function handleFileSelect(evt) {
  var files = evt.target.files; // FileList object

  // files is a FileList of File objects. List some properties.
  var output = [];
  for (var i = 0, f; f = files[i]; i++) {
    console.log(f.size);        /*<--Here is your size of the file! :D*/
  }
}

document.getElementById('files').addEventListener('change', handleFileSelect, false);
person Derek 朕會功夫    schedule 20.08.2011
comment
Уважаемый Дерек, большое спасибо за ваше решение, оно кажется очень интересным, и я сохраню его для будущего использования, но знаете ли вы, как добиться этого в html4? - person Pedro Lobito; 20.08.2011
comment
@Tuga, я не думаю, что это возможно в HTML4. Вы должны сделать это в sever. - person Derek 朕會功夫; 20.08.2011
comment
Спасибо, буду искать решение в html4. - person Pedro Lobito; 20.08.2011
comment
@Tuga, на самом деле вы можете использовать Flash для этого. - person Derek 朕會功夫; 15.09.2011

Если вы используете php, вы можете установить опцию php — «upload_max_filesize». См. http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize Может быть, это поможет.

person Andrej Ludinovskov    schedule 20.08.2011
comment
Спасибо за ваш ответ, но мне нужно проверить размер файла перед его загрузкой, чтобы не перегружать сервер без необходимости, по сути, мне нужно проверить размер файла на клиентской стороне и НЕ на серверной. - person Pedro Lobito; 20.08.2011