Помощник
|
Как узнать тип загружаемого файла?, И если это картинка - её размеры. |
sc2r2bey
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
13.2.2010, 0:03;
Ответить: ZiTosS
Сообщение
#2
|
|
sc2r2bey,
Допустим, что мы имеем форму: <form action="обработчик" method="post" enctype="multipart/form-data"> <input type="file" name="upload_file" /> <input type="submit" value="Загрузить" /> </form> Затем, при переходе на обработчик, мы имеем: [php]$_FILES['upload_file']['name']; // имя файла до его отправки на сервер, например, image.gif $_FILES['upload_file']['size']; // размер принятого файла в байтах $_FILES['upload_file']['type']; // MIME-тип принятого файла (если браузер смог его определить), например: image/gif, image/png, image/jpeg, text/html[/php] Изначально надо обращать внимание на настройки некоторых директив сервера и PHP Конфигурационный файл PHP php.ini имеет три параметра, связанные с загрузкой файлов на сервер:
Размеры картинки(если это картинка), можно узнать с помощью функции getimagesize() Пусть она даже будет загружена во временный каталог, главное правильно путь указать |
|
|
yury_mw |
13.2.2010, 0:04;
Ответить: yury_mw
Сообщение
#3
|
|
sc2r2bey,
вот Пример реализации загрузки картинок на сервер. ( взято со страницы http://phpclub.ru/detail/article/upload ) [php]<? $max_image_width = 380; $max_image_height = 600; $max_image_size = 64 * 1024; $valid_types = array("gif","jpg", "png", "jpeg"); if (isset($_FILES["userfile"])) { if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { $filename = $_FILES['userfile']['tmp_name']; $ext = substr($_FILES['userfile']['name'], 1 + strrpos($_FILES['userfile']['name'], ".")); if (filesize($filename) > $max_image_size) { echo 'Error: File size > 64K.'; } elseif (!in_array($ext, $valid_types)) { echo 'Error: Invalid file type.'; } else { $size = GetImageSize($filename); if (($size) && ($size[0] < $max_image_width) && ($size[1] < $max_image_height)) { if (@move_uploaded_file($filename, "/www/htdocs/upload/")) { echo 'File successful uploaded.'; } else { echo 'Error: moving file failed.'; } } else { echo 'Error: invalid image properties.'; } } } else { echo "Error: empty file."; } } else { echo ' <form enctype="multipart/form-data" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="64000"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form>'; } ?>[/php] |
|
|
sc2r2bey
|
Сообщение
#4
|
|
мне надо проверить, чтоб загружались изображения с расширением jpg не больше размера 800 на 800 пикселей
-------------------- программирую web и для we |
|
|
yury_mw |
13.2.2010, 0:23;
Ответить: yury_mw
Сообщение
#5
|
|
sc2r2bey,
в чем проблема? Задаешь [php]$max_image_width = 800; $max_image_height = 800; $valid_types = array("jpg", "jpeg");[/php]а проверку на размер файла убираешь, если не нужна: [php]<?php $max_image_width = 800; $max_image_height = 800; $valid_types = array("jpg", "jpeg"); if (isset($_FILES["userfile"])) { if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { $filename = $_FILES['userfile']['tmp_name']; $ext = substr($_FILES['userfile']['name'], 1 + strrpos($_FILES['userfile']['name'], ".")); if (!in_array($ext, $valid_types)) { echo 'Error: Invalid file type.'; } else { $size = GetImageSize($filename); if (($size) && ($size[0] < $max_image_width) && ($size[1] < $max_image_height)) { if (@move_uploaded_file($filename, "/www/htdocs/upload/")) { echo 'File successful uploaded.'; } else { echo 'Error: moving file failed.'; } } else { echo 'Error: invalid image properties.'; } } } else { echo "Error: empty file."; } } else { echo ' <form enctype="multipart/form-data" method="post"> Send this file: <input name="userfile" type="file"> <input type="submit" value="Send File"> </form>'; } ?>[/php] |
|
|
ZiTosS |
13.2.2010, 0:45;
Ответить: ZiTosS
Сообщение
#6
|
|
yury, по расширениям не всегда правильно судить. Надо и MIME-type проверять
[php]if( $_FILES['userfile']['type'] == "image/jpeg" ) { // JPG по MIME-type } else { // НЕ JPG по MIME-type }[/php] |
|
|
sc2r2bey
|
Сообщение
#7
|
|
говорят что MIME-type легко подделать
-------------------- программирую web и для we |
|
|
ZiTosS |
13.2.2010, 1:09;
Ответить: ZiTosS
Сообщение
#8
|
|
sc2r2bey, а расширение нет? Шутник...
Вообще самой хорошей защитой на серверах с ОС, поддерживающей разделение прав, является ограничение загружаемых файлов на исполнение (хотя сервера с этим иногда кривят)... |
|
|
sc2r2bey
|
Сообщение
#9
|
|
но у меня стоит задача загружать jpg изображение размером не менее 600 на 600 пикселей
но если exe переименовать в jpg и загрузить на сервер то он там не запуститься, да и nix он не запуститься если будут exe -------------------- программирую web и для we |
|
|
yury_mw |
13.2.2010, 2:14;
Ответить: yury_mw
Сообщение
#10
|
|
yury, по расширениям не всегда правильно судить. Надо и MIME-type проверять ZiTosS, да.Я сам хотел это сказать, но тут появилось сообщение от sc2r2bey, что ему нужно именно расширение контролить: мне надо проверить, чтоб загружались изображения с расширением jpg не больше размера 800 на 800 пикселей а в твоем сообщении, чуть раньше, ты показал, где хранится инфа про MIME-type - $_FILES['upload_file']['type']. И при необходимости можно легко добавить соответствующую проверку.Потому я расслабился и потер свое недописанное замечание. ;) ЗЫ Кстати, по результатам проверки: [php] $size = GetImageSize($filename); if (($size) && ($size[0] < $max_image_width) && ($size[1] < $max_image_height)) { ... } else { echo 'Error: invalid image properties.'; }[/php]на файл-некартинку придет ругательство "Error: invalid image properties." |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Большие ставки для кликов в Я.Директ. Как удешевить? | 2 | rownong27 | 1119 | 26.3.2024, 14:13 автор: knezevolk |
|
Как вы бросили работу и перешли на заработок с сайтов? | 12 | uahomka | 2289 | 25.3.2024, 6:52 автор: Skyworker |
|
Как отозвать банковский платеж фрилансеру? | 28 | metvekot | 3912 | 25.3.2024, 6:34 автор: Skyworker |
|
Как вывести деньги в Украине с заблокированного Юмани ? | 23 | freeax | 3637 | 24.3.2024, 20:55 автор: Liudmila |
|
Через какой браузер и как можно найти в кэшэ браузера видео | 10 | Room | 1929 | 23.3.2024, 7:41 автор: Room |
Текстовая версия | Сейчас: 28.3.2024, 21:37 |