Как узнать размер файла до загрузки на сервер?

Ekaterina

Новичок
Как узнать размер файла до загрузки на сервер?

Подскажите, пожалуйста, как проверить размер загружаемого файла перед загрузкой файла на сервер?
Что-то типа проверки:
PHP:
 <?
$max_size = get_cfg_var('upload_max_filesize');
$sld_file_size = filesize($path_to_file);

if ($sld_file_size >$max_size) {
   $error = __('Ошибка! Размер загружаемого файла превышает допустимое значение, равное '.$max_size);	
}   
?>
Что передавать в качестве $path_to_file?
 

Adelf

Administrator
Команда форума
Перед загрузкой он нам недоступен. Из PHP мы можем работать с файлами уже загруженными на сервер и лежащими в темповой папке.

Вариант один: сконфигурировать параметр upload_max_size
Два: проверять самим описанным способом, тогда путь надо искать в массиве $_FILES
 

Ekaterina

Новичок
Файл не попадет в массив $_FILES, если он превышает размер , указанный в php.ini.
 

Beavis

Banned
можно в форму аплоада файла добавить
<input type="hidden" name="MAX_FILE_SIZE" value="макс. размер в байтах">
 

A1x

Новичок
вообще есть заголовок Content-Length который содержит приблизительно размер загружаемого файла
можно его посмотреть и например прервать загрузку если он больше чем надо, только на пхп это не получится (на перле например можно)

на пхп можно попробовать APC RFC1867 File Upload Progress hook
 

Фанат

oncle terrible
Команда форума
Beavis
добавить-то можно, но смысла в этом будет ноль целых, хрен десятых.
 

Ekaterina

Новичок
Хотелось бы просто знать какие методы существуют, как вообще обычно решают такую задачу?
 

Krishna

Продался Java
Ekaterina

Хотелось бы знать, зачем именно Вам потребовалось такую задачу решать. Выглядит достаточно надуманной.
 

Ekaterina

Новичок
Есть задача, одним из пунктов которой пользователь должен грузить файл определенного размера, смотрю обработку всех возможных ошибок, которые могут возникнуть. Есть некрасивый вариант проверять
PHP:
!empty($_FILES['sld_upload']['tmp_name']
и выдавать сообщение типа: выберите файл для загрузки либо проверьте размер загружаемого файла. Это будет работать, просто раньше не задумывалась над этой проблемой, поэтому хочу знать как другие поступают в подобных случаях.
И кстати странно, если гружу файл больше допустимого размера, PHP почему-то не генерирует сам ошибку, хотя вроде должен, контроль ошибок включен. По идее ведь сам php должен выдавать ошибку?
 

Фанат

oncle terrible
Команда форума
PHP:
if ($_FILES['sld_upload']['error'] === 0)
единственно правильный вариант проверки на отсутствие ошибки загрузки файла
другими словами, начинать совершать какие-либо телодвижения по обработке файла можно только после этой проверки
 

Beavis

Banned
Автор оригинала: baev
— Вы сами это пробовали?
конечно, это широко применяемая практика, помогает от попыток загрузить вместо картинки гигабайт какой-нибудь фигни
 

baev

‹°°¬•
Команда форума
конечно, это широко применяемая практика, помогает от попыток загрузить вместо картинки гигабайт какой-нибудь фигни
— где можно посмотреть/«пощупать»?
 

dimagolov

Новичок
Beavis, это поможет только юзерам, которые случайно прицепили что-то большое для отправки, и то не на всех браузерах. тем, кто намеренно засылает тебе гигабайтные файлы это как бы без разницы...
 

baev

‹°°¬•
Команда форума
Beavis, зачем мне «на локалхосте»?

Вы же про «широко применяемую практику» писали — вот и приведите пример действующего сайта.
 
Сверху