[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу ограничить загрузку картинки по размеру
Братуха
Привет всем. Вот код загрузки аватара
<td width="55%" height="605" colspan="2" rowspan="2">
<?php function foo($photo) {
if(!empty($photo['img'])) {
$ImgInfo = getimagesize($photo['img']['tmp_name']);
#тип картинки
$types = array('image/jpeg','image/png','image/gif');
if(!in_array($ImgInfo['mime'],$types)) echo('Картинка должна быть формата JPEG,GIF или PNG');
#размер картинки
if($ImgInfo['mime']['size']>10) echo('Картинка больше ');
if($ImgInfo[0] > 5000 || $ImgInfo[1] > 7000 || empty($ImgInfo[0]))

echo('Ширина должна быть меньше 50 и высота меньше 70 пикселей');
else { #размер нормальный
$ImgName = 'avatars/'; #путь к картинкам
$ImgName .= $_SESSION['user_data']['email'].'.'.substr($ImgInfo['mime'],6);
if(move_uploaded_file($photo['img']['tmp_name'],$ImgName))
echo 'Фотография успешно загружена!';
else echo 'Произошла ошибка при загрузке фотографии.';
}
}
}
?>
<form method="post" enctype="multipart/form-data">
<
input type="file" name="img" />
<
input type="submit" name="upload" value="Загрузить" />
</
form>
<?php
if(isset($_POST['upload'])) {
foo($_FILES);

}
?>
Не получается ограничить размер загружаемой странички. Может есть какие-то дополнения. Зарание большое спасибо.



Спустя 1 час, 42 минуты, 40 секунд (12.09.2012 - 10:17) killer8080 написал(а):
А может лучше ресайз делать?

Спустя 17 минут, 13 секунд (12.09.2012 - 10:34) walerus написал(а):
killer8080 Думаю не совсем то что хочет ТС, ресайз дело хорошее, но а если файл подсунут 50Мб ))).

echo "Размер файла: ".filesize($name).' байт';
От сюда уже "плясать" в нужном направлении...

Спустя 7 минут, 20 секунд (12.09.2012 - 10:42) killer8080 написал(а):
Цитата (walerus @ 12.09.2012 - 10:34)
killer8080 Думаю не совсем то что хочет ТС, ресайз дело хорошее, но а если файл подсунут 50Мб ))).


Большие файлы можно отрезать на уровне php, через настройку upload_max_filesize, а без ресайза, это как то не серьезно. Представь что ты пытаешься загрузить аватару размером 100X120 пискселей, а тебе в ответ - "слишком большая картинка", как ты к этому отнесешься, как рядовой юзер? Полезешь в фотошоп картинку в размер вгонять? А если это чужой комп, где нибудь в интернет кафе, и никакого софта для этого под рукой нет? Юзабельность прежде всего smile.gif

Спустя 3 минуты, 6 секунд (12.09.2012 - 10:45) walerus написал(а):
killer8080 Согласен, со стороны юзабилити ты прав. По теме, я малость ошибся, ТС не того хотел что я написал, вот поправил его скрипт:

<td width="55%" height="605" colspan="2" rowspan="2">
<?php
function
foo($photo)
{
if(!empty($photo['img']))
{
$ImgInfo = getimagesize($photo['img']['tmp_name']);

#тип картинки
$types = array('image/jpeg','image/png','image/gif');
if( !in_array( $ImgInfo['mime'],$types ) )
{
// echo('Картинка должна быть формата JPEG,GIF или PNG');
return array( 'ERROR' => true, 'msg' => 'Картинка должна быть формата JPEG,GIF или PNG');
}

#размер картинки
if($ImgInfo['mime']['size']>10)
{
// echo('Картинка больше ');
return array( 'ERROR' => true, 'msg' => 'Картинка больше' );
}

if($ImgInfo[0] > 5000 || $ImgInfo[1] > 7000 || empty($ImgInfo[0]))
{
// echo( 'Ширина должна быть меньше 50 и высота меньше 70 пикселей' );
return array( 'ERROR' => true, 'msg' => 'Ширина должна быть меньше 50 и высота меньше 70 пикселей' );
}
else
{
#размер нормальный
$ImgName = 'avatars/'; #путь к картинкам
$ImgName .= $_SESSION['user_data']['email'].'.'.substr($ImgInfo['mime'],6);

if(move_uploaded_file($photo['img']['tmp_name'],$ImgName))
{
//echo 'Фотография успешно загружена!';
return array( 'ERROR' => false, 'msg' => 'Фотография успешно загружена!' );
}
else
{
// echo 'Произошла ошибка при загрузке фотографии.';
return array( 'ERROR' => true, 'msg' => 'Произошла ошибка при загрузке фотографии.' );
}
}
}
}

?>
<form method="post" enctype="multipart/form-data">
<
input type="file" name="img" />
<
input type="submit" name="upload" value="Загрузить" />
</
form>
<?php
if(isset($_POST['upload']))
{
$foo = foo($_FILES);

if ( $foo['ERROR'] )
{
// Выводим сообщение об ошибке
echo "<font color=red><b>" . $foo['msg'] . "</b></font><br>\n";
}
else
{
// Выводим сообщение об удачной загрузке
echo "<font color=green><b>" . $foo['msg'] . "</b></font><br>\n";
}
}

?>


Про ресайз Братуха, тут была кучка примеров, поиском по сайту можно найти то что тебе нужно ;)

Спустя 7 минут, 27 секунд (12.09.2012 - 10:52) killer8080 написал(а):
walerus
тег <font> устаревший, его лучше не использовать, а в целом OK smile.gif .

Спустя 50 минут, 16 секунд (12.09.2012 - 11:42) Братуха написал(а):
Спасибо всем за ответы буду тестировать, а когда я плюсики смогу делать?

Спустя 9 минут, 39 секунд (12.09.2012 - 11:52) Братуха написал(а):
Цитата (walerus @ 12.09.2012 - 10:45)
killer8080 Согласен, со стороны юзабилити ты прав. По теме, я малость ошибся, ТС не того хотел что я написал, вот поправил его скрипт:

<td width="55%" height="605" colspan="2" rowspan="2">
<?php
function
foo($photo) {

}

?>
<form method="post" enctype="multipart/form-data">
<
input type="file" name="img" />
<
input type="submit" name="upload" value="Загрузить" />
</
form>
<?php
if(isset($_POST['upload']))
{
$foo = foo($_FILES);

if ( $foo['ERROR'] )
{
// Выводим сообщение об ошибке
echo "<font color=red><b>" . $foo['msg'] . "</b></font><br>\n";
}
else
{
// Выводим сообщение об удачной загрузке
echo "<font color=green><b>" . $foo['msg'] . "</b></font><br>\n";
}
}

?>


Про ресайз Братуха, тут была кучка примеров, поиском по сайту можно найти то что тебе нужно ;)

walerus выводит ошибк уследующего содержания:"Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in Y:\home\test2.ru\www\skins\tpl\register\form_redact_info.tpl on line 19" а про размер картинки даже ни чего не сказал, хоть я и загружал 2,3 мегабайта

Спустя 55 минут, 13 секунд (12.09.2012 - 12:47) Игорь_Vasinsky написал(а):
смотрим в $_FILES так

echo '<pre>' . print_r($_FILES, 1) .  '</pre>'; 

открываем для себя много нового.

Спустя 1 час, 58 секунд (12.09.2012 - 13:48) walerus написал(а):
Игорь_Vasinsky
Цитата
открываем для себя много нового.
Интересного и не изведанного laugh.gif

Спустя 28 минут, 58 секунд (12.09.2012 - 14:17) Братуха написал(а):
Ну и что дает этот массив?

Спустя 59 минут, 42 секунды (12.09.2012 - 15:17) killer8080 написал(а):
Цитата (Братуха @ 12.09.2012 - 14:17)
Ну и что дает этот массив?

А откуда ты файлы извлекать собирался? blink.gif
Цитата (Братуха @ 12.09.2012 - 11:42)
а когда я плюсики смогу делать?

когда количество постов будет больше 10-ти, если не ошибаюсь.

Спустя 13 минут, 10 секунд (12.09.2012 - 15:30) walerus написал(а):
Братуха Почитать про $_FILES
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.