Получение размера загружаемого файла перед загрузкой - PullRequest
8 голосов
/ 16 ноября 2010

Когда пользователь выбирает файл для загрузки, есть ли способ узнать точный размер этого файла еще до начала загрузки? Я предполагаю, что это должно быть сделано на стороне клиента с помощью jQuery или JavaScript. Есть идеи как?

Ответы [ 5 ]

5 голосов
/ 16 ноября 2010

Это не может быть сделано в чистом Javascript в текущих браузерах.

Вместо этого вы можете использовать Uploadify , который использует Flash.

В не-IEбраузеры , вы также можете использовать HTML5 для чтения файлов на клиенте .

1 голос
/ 12 июня 2012
$("#file_input_selector").bind('change', function(){
 alert(this.files[0].size);
});

Не уверен во всех проблемах совместимости, но мне кажется, это работает нормально.

0 голосов
/ 16 ноября 2010

Я предлагаю вам взглянуть на API файлов HTML5.Это в сочетании с некоторыми JS может помочь вам.Я только говорю «возможно», потому что у меня еще не было возможности просмотреть эту часть стандарта HTML5.

http://www.w3.org/TR/FileAPI/#dfn-filereader

Способ загрузки файлов PHP работает, его очень сложно проверить.сведения о файле до или во время загрузки файла (поскольку файл загружен еще до того, как ваш код загружен).

Я знаю, что на некоторых других языках (возможно, на Perl или Python) можно сделать некоторые интересные вещи, которыеобрабатывать загрузку файлов напрямую с помощью скрипта (где скрипт открывает сокет и обрабатывает всю передачу), однако PHP делает это за вас и принимает любой файл от имени вашего скрипта.Файл удаляется, если он не находится в допустимых пределах PHP, но только после того, как файл полностью загружен.

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

0 голосов
/ 16 ноября 2010

Javascript не имеет возможности проверить размеры файлов (или получить доступ к файловой системе в этом отношении). Вам нужно будет загрузить файл, чтобы получить размер

0 голосов
/ 16 ноября 2010

Посмотрите на этот пост:

...