X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Как узнать тип загружаемого файла?, И если это картинка - её размеры.
sc2r2bey
sc2r2bey
Topic Starter сообщение 12.2.2010, 15:11; Ответить: sc2r2bey
Сообщение #1


при условии, что файл сначала загружается во временную директорию?

а как узнать размер длина и ширина изображения при загрузке изображения во временную папку?
т.е. поставить ограничение на размер загружаемого файла и тип расширения.


--------------------
Заметки о разработке и не только
программирую web и для we
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
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 имеет три параметра, связанные с загрузкой файлов на сервер:
  • file_uploads=On - разрешает загрузку файлов на сервер по протоколу HTTP;
  • upoad_tmp_dir=/tmp - устанавливает каталог для временного хранения загруженных файлов;
  • upload_max_filesize=2M - устанавливает максимальный объем загружаемых файлов.

Размеры картинки(если это картинка), можно узнать с помощью функции getimagesize()
Пусть она даже будет загружена во временный каталог, главное правильно путь указать ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
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
sc2r2bey
Topic Starter сообщение 13.2.2010, 0:14; Ответить: sc2r2bey
Сообщение #4


мне надо проверить, чтоб загружались изображения с расширением jpg не больше размера 800 на 800 пикселей


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
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
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
sc2r2bey
Topic Starter сообщение 13.2.2010, 0:52; Ответить: sc2r2bey
Сообщение #7


говорят что MIME-type легко подделать


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 13.2.2010, 1:09; Ответить: ZiTosS
Сообщение #8


sc2r2bey, а расширение нет? Шутник...
Вообще самой хорошей защитой на серверах с ОС, поддерживающей разделение прав, является ограничение загружаемых файлов на исполнение (хотя сервера с этим иногда кривят)...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
sc2r2bey
sc2r2bey
Topic Starter сообщение 13.2.2010, 1:14; Ответить: sc2r2bey
Сообщение #9


но у меня стоит задача загружать jpg изображение размером не менее 600 на 600 пикселей
но если exe переименовать в jpg и загрузить на сервер то он там не запуститься, да и nix он не запуститься если будут exe ;)


--------------------
Заметки о разработке и не только
программирую web и для we
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
yury_mw
yury_mw
сообщение 13.2.2010, 2:14; Ответить: yury_mw
Сообщение #10


(ZiTosS @ 12.2.2010, 23:45) *
yury, по расширениям не всегда правильно судить. Надо и MIME-type проверять
ZiTosS, да.
Я сам хотел это сказать, но тут появилось сообщение от sc2r2bey, что ему нужно именно расширение контролить:
(sc2r2bey @ 12.2.2010, 23:14) *
мне надо проверить, чтоб загружались изображения с расширением 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 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
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


 



RSS Текстовая версия Сейчас: 28.3.2024, 21:37
Дизайн