| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Загрузка файла на HTTP-сервер (размер файла) |
| Автор: СтудентИзРоссии 31.3.2007, 23:44 |
| Добрый вечер! Используется стандартная HTML-форма для загрузки файла на HTTP-сервер: http://php.net/manual/en/features.file-upload.php Возможно ли без полной загрузки файла на HTTP-сервер получить размер загружаемого файла? |
| Автор: BuShaRt 1.4.2007, 19:02 |
| http://phpclub.ru/detail/article/upload а именно: $_FILES['userfile']['size'] - размер загруженного файла; |
| Автор: Golda 1.4.2007, 19:19 | ||
Не уверена. Но вот ограничить максимальный размер загружаемого файла легко. Он задается зарезервированным параметром MAX_FILE_SIZE.
BuShaRt, насколько я понимаю, у JS нет доступа к файловой системе. Соответственно, нет возможности узнать размер какого-либо файла. Более того, на уровне JS из соображений безопасности нет даже доступа к value поля типа file. Что Вы имели в виду? (Надеюсь, этот вопрос не будет расценен как offtopic. Не увидела возможности задать его по другому). |
| Автор: СтудентИзРоссии 7.4.2007, 19:02 |
| BuShaRt, к сожалению, массив $_FILES можно получить только после полной загрузки файла на сервер. Golda, к сожалению, этот метод не безопасный. skyboy, спасибо за совет, попробуем. На http://rapidshare.com и http://ifolder.ru каким-то образом эту задачу решили. |
| Автор: capitan 11.4.2007, 16:12 |
| Что значит полная загрузка на сервер? При uploade файла, передаётся массив $_FILES. В котором есть все данные о файле. Дальше используем например функцию move_uploaded_file или copy/ Кому что нравиться и файл загружается на сервер. Перед вызовом этих функций можно прочитать массив и если что-то не устраивает,- файл не грузить. Так например идёт проверка на тип , размер аватара при загрузки его на форум. Поясните что значит полная и неполная загрузка? |
| Автор: skyboy 11.4.2007, 17:06 |
а значит это, что файл, даже до того, как ты его делаешь move/copy_uploaded_file, уже загружен на сервер в папку tmp_dir. И, если файл занимает, скажем, 100 Мб, был загружен не за одну секунду. В такой ситуации очень обидно фильтровать файлы "пост фактум" - было бы хорошо(автору треда) определять размер файла ДО того, как файл будет загружен на сервер и появится в папке tmp_dir и массиве $_FILES ;-) |
| Автор: mishaSL 11.4.2007, 17:25 | ||
массив $_FILES - создается после загрузки файла на сервер. Эти функции работают с уже загруженными файлами.
Получить размер файла до загрузки на чистом PHP(без использования других языков) на сколько мне известо нельзя. Можно установить максимальный размер загружаемого файла - директива upload_max_filesize, если файл больше чем установленный размер, то информация об этом будет в $_FILES['userfile']['error'] (подробнее http://ru2.php.net/manual/ru/features.file-upload.errors.php) |
| Автор: СтудентИзРоссии 3.6.2007, 20:58 | ||||
Нашли решение для Apache 2.X - mod_uploader: http://acapulco.dyndns.org/mod_uploader/ Может кто-то знает, что-нибудь подобное для Apache 1.3.X? |