![]() |
Проблемы с загрузкой файлов
Нужно сделать так чтобы пользователь не мог закачать файл больше чем установлено различными настройками сервера, в частности php: upload_max_filesize, post_max_size.
Форма закачки имеет стандартный вид: Код:
<form enctype="multipart/form-data" action="_URL_" method="post">Так вот, проблема в следующем: Если размер файла больше чем значение поля MAX_FILE_SIZE в хтмл форме, то сначала файл грузится на сервер, при этом появляется предупреждение: Код:
Warning: POST Content-Length of 8387342 bytes exceeds the limit of 5242880 bytes in Unknown on line 0Я конечно понимаю что с точки зрения хттп протокола это правильно, но что? браузеры не смотрят чтоли значение этого поля? Можно ли как нибудь сделать так чтобы на стороне клиента проверялся размер файла? |
Цитата:
|
Saruman, ты меня не понял. Мне нужно сделать так чтобы при закачке файла 100 мегабайт сообщение о том что лимит - 99, выскакивало до того как пользователь потратит кучу времени на его закачку!!! На серевере у меня все под контролем!!!!!!!
|
ок, сформулирую по другому - нет кросс-браузерного способа на стороне клиента контролировать размер закачиваемого файла. Javascript не предоставляет подобных возможностей, это возможно посредством ActiveX - но, ессно, результат будет IE-only (пример кода), либо же делать на флеше файл-аплоадер.
Если же тебе нужно кросс-браузерное решение - то его можно реализовать только на стороне сервера. В частности, при обнаружении параметра MAX_FILE_SIZE пхп проверяет переданный объём POST-запроса (из хедера content-length) на предмет превышения этого параметра, и если запрос (=закачиваемый файл) больше - то СРАЗУ выдаёт ошибку, не дожидаясь закачки всего файла, что тебе и нужно, как я понял. Ессно, для этого поле с MAX_FILE_SIZE должно идти до тела закачиваемого файла. |
Мне нужно чтобы закачка вообще не начиналась когда файл слишком большой...
И ошибку превишение Content-Length'ом лимита пхп почему то выдвет после того как закачает файл на сервер! Те насколько я понял нереально сделать так как я хочу? |
Цитата:
|
Кстати, я тоже какое-то время назад столкнулся с этим, и для меня было удивительно и не понятно такое положение дел.
Saruman, понятно что на сервере все проверяется уже реально, и не для проверок это хотелось бы сделать, чтобы защититься от тех пользователей, которые будут сами формировать POST-запросы, а именно и только для удобства самого пользователя - тоесть чтобы не заставлять его ждать (тратить трафик, деньги) загрузки файла, который я (мой сервер) в итоге не примет! Я понимаю что несекьюрно давать доступ к каким-либо операциям с файловой системой на JavaScript, или на запись в value <input type=file>, как это есть, все понимаю. Но почему нельзя тот же размер, вместе с именем файла, сделать для JavaScript доступным, для выбранного файла пользователя, вместе с его именем (не в Опере только. В ней мне так и не удалось получить имя, в остальных без проблем)? Кстати, на счёт варианта, для IE и FireFox можно сделать на JavaScript разные реализации проверки, но при этом для FF надо будет скрипт подписывать, а для IE это будет использовать встроенный для таких целей ActiveX элемент для доступа к файловой системе пользователя. И в том и в другом случае, пользователю будет выдано предупреждение и запрос на разрешение небезопасной операции. |
| Часовой пояс GMT +4, время: 03:11. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.