[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не функционирует скрипт загрузки аватаров...
cyberside

<?php
if(!isset($_POST['savenavatar'])){
?>
<form action="" method="post" enctype="multipart/form-data">
<
table class="pe">
<
tr>
<
td class="label" style="vertical-align: top;">Ваш аватар/фото:</td><td class="text"><img src="/images/avatars/users/<?=$Mainclass->Account->GetValue('avatar');?>big.jpg" /></td>
</
tr>
<
tr>
<
td class="label">Выбирете новое:</td><td class="text"><input type="file" name="avatarimg" class="pe_text" style="height: 25px; width: 150px;" /></td>
</
tr>
</
table>
<
div style="margin-top: 5px; margin-left: 350px;"><input type="submit" class="mybutton" name="savenavatar" value="сохранить" /></div>
</
form>
<?php
}else{
function upload_image($name, $user_id, $upload_dir, &$message){
if(empty($_FILES[$name])){
$message = 'файл не загружен';
return false;
}

$img = getimagesize($_FILES[$name]['tmp_name']);
if(!$img || strpos($img['mime'], 'image/') !== 0){
$message = 'загруженный файл не является изображением';
return false;
}

$func = 'imagecreatefrom'.substr($img['mime'], strpos($img['mime'], '/') + 1);
if(!function_exists($func)){
$message = 'формат изображения не поддерживается';
return false;
}

$src_im = $func($_FILES[$name]['tmp_name']);

$width_big = $img[0] >= $img[1] ? 150 : ($img[0] * 150 / $img[1]);
$height_big = $img[1] >= $img[0] ? 210 : ($img[1] * 210 / $img[0]);
$width_small = $img[0] >= $img[1] ? 52 : ($img[0] * 52 / $img[1]);
$height_small = $img[1] >= $img[0] ? 52 : ($img[1] * 52 / $img[0]);
$width_mini = $img[0] >= $img[1] ? 25 : ($img[0] * 25 / $img[1]);
$height_mini = $img[1] >= $img[0] ? 25 : ($img[1] * 25 / $img[0]);

$dst_im_big = imagecreatetruecolor($width_big, $height_big);
$dst_im_small = imagecreatetruecolor($width_small, $height_small);
$dst_im_mini = imagecreatetruecolor($width_mini, $height_mini);

imagecopyresampled($dst_im_big, $src_im, 0, 0, 0, 0, $width_big, $height_big, $img[0], $img[1]);
$avatar_big = rtrim($upload_dir, '/').'/usr'.$user_id.'_'.time().'_big.jpg';
imagejpeg($dst_im, $avatar_big, 100);
chmod($file, 0775);
imagedestroy($src_im);
imagedestroy($dst_im_big);

imagecopyresampled($dst_im_small, $src_im, 0, 0, 0, 0, $width_small, $height_small, $img[0], $img[1]);
$avatar_small = rtrim($upload_dir, '/').'/usr'.$user_id.'_'.time().'_small.jpg';
imagejpeg($dst_im, $avatar_small, 100);
chmod($file, 0775);
imagedestroy($src_im);
imagedestroy($dst_im_small);

imagecopyresampled($dst_im_mini, $src_im, 0, 0, 0, 0, $width_mini, $height_mini, $img[0], $img[1]);
$avatar_mini = rtrim($upload_dir, '/').'/usr'.$user_id.'_'.time().'_mini.jpg';
imagejpeg($dst_im, $avatar_mini, 100);
chmod($file, 0775);
imagedestroy($src_im);
imagedestroy($dst_im_mini);

$dbc_gin = mysql_query("SELECT avatar FROM users WHERE id='".$user_id."'");
$gin = mysql_fetch_assoc($dbc_gin);
unlink("images/avatars/users/".$gin['avatar']."big.jpg");
unlink("images/avatars/users/".$gin['avatar']."small.jpg");
unlink("images/avatars/users/".$gin['avatar']."mini.jpg");
return true;
}
$upload_dir = 'images/avatars/users/';
if(upload_image('avatarimg', $user_id, $upload_dir, $message)){
echo 'Файл загружен';
}else{
echo 'Ошибка: '.$message;
}
}

?>


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



Спустя 7 минут, 38 секунд (18.11.2011 - 23:22) Игорь_Vasinsky написал(а):
смотри как работает эта функция, какие аргименты приходят, что на выходе - error

function upload_image($name, $user_id, $upload_dir, &$message){
if(empty($_FILES[$name])){
$message = 'файл не загружен';
return false;
}


дело в ней.

Спустя 1 минута, 53 секунды (18.11.2011 - 23:24) cyberside написал(а):
Єто-то понятно что в ней дело, но вот почему? Если на нее приходит файл, но он не приходит судя по функции empty...

Спустя 10 минут, 3 секунды (18.11.2011 - 23:34) Игорь_Vasinsky написал(а):
Цитата
Если на нее приходит файл, но он не приходит судя по функции empty...


ну тебе видней.

что говорит $_FILES[$name]?

давай-ка не леньчайничай.

Спустя 4 минуты, 2 секунды (18.11.2011 - 23:38) cyberside написал(а):
Он сообщает что в нем пустота

Спустя 3 минуты, 10 секунд (18.11.2011 - 23:41) Игорь_Vasinsky написал(а):
biggrin.gif biggrin.gif biggrin.gif
удивительное наблюдение.

Вопрос 2: почему в нём пустота?

Спустя 5 минут, 25 секунд (18.11.2011 - 23:47) cyberside написал(а):
Гугл не знает(
Но теоритически данные не передаються... Но вот почему, гугль не знает..

Спустя 4 минуты, 50 секунд (18.11.2011 - 23:51) Игорь_Vasinsky написал(а):
Цитата
Но теоритически данные не передаються...


Блин.. я ведь так долго могу biggrin.gif

а практически?

разве ты узнаешь пуст ли массив $_FILES при помощи empty?

так можно проверить элемент массива, но не массив. А по какому элементу массива $_FILES можно проверить что он действительно не пуст?

Подсказываю: что файл был скопирован во временную директорию?

Спустя 1 минута, 48 секунд (18.11.2011 - 23:53) cyberside написал(а):
Я именно так его и проверил)

Спустя 2 минуты, 56 секунд (18.11.2011 - 23:56) Игорь_Vasinsky написал(а):
покажи как ты его проверил?

Цитата
разве ты узнаешь пуст ли массив $_FILES при помощи empty?

так можно проверить элемент массива, но не массив. А по какому элементу массива $_FILES можно проверить что он действительно не пуст?

Подсказываю: что файл был скопирован во временную директорию?

Спустя 2 минуты, 36 секунд (18.11.2011 - 23:59) cyberside написал(а):
echo $_FILES['avatarimg'];
:D

Спустя 3 минуты, 2 секунды (19.11.2011 - 00:02) Игорь_Vasinsky написал(а):
Цитата
разве ты узнаешь пуст ли массив $_FILES при помощи empty?

так можно проверить элемент массива, но не массив. А по какому элементу массива $_FILES можно проверить что он действительно не пуст?

Подсказываю: что файл был скопирован во временную директорию?


вот здесь что написано уже 3й раз?

Спустя 33 секунды (19.11.2011 - 00:02) Игорь_Vasinsky написал(а):
и что выходит при

echo $_FILES['avatarimg'];

Спустя 2 минуты, 40 секунд (19.11.2011 - 00:05) cyberside написал(а):
Пустота, а с масивами я вообще никогда не работал (напрямую), раз на то пошло) Не зря тема в разделе для начинающих...

Спустя 1 минута, 35 секунд (19.11.2011 - 00:07) Игорь_Vasinsky написал(а):
Цитата
Пустота, а с масивами я вообще никогда не работал (напрямую), раз на то пошло) Не зря тема в разделе для начинающих...


а зачем начинающий начал скрипт не для нацинающих? раз на то пошло?

поставь в начале страницы
error_reporting(E_ALL);

Спустя 1 минута, 52 секунды (19.11.2011 - 00:09) Игорь_Vasinsky написал(а):
потом сделай

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

Спустя 5 минут, 10 секунд (19.11.2011 - 00:14) cyberside написал(а):
Array
(
[avatarimg] => asd.png
[savenavatar] => сохранить
)

Спустя 2 минуты, 22 секунды (19.11.2011 - 00:16) Игорь_Vasinsky написал(а):
теперь дам наводящий совет #1

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

Спустя 4 минуты, 18 секунд (19.11.2011 - 00:20) cyberside написал(а):
Array
(
)

Вот такая вот штука laugh.gif
Оно мне ни очем (по крайней мере новом) не говорит)
И так понятно что не передает...

Спустя 2 минуты, 40 секунд (19.11.2011 - 00:23) Игорь_Vasinsky написал(а):
Наводящий ввопрос: а что у нас в $name ???

Спустя 15 секунд (19.11.2011 - 00:23) Invis1ble написал(а):
сорри

Спустя 1 минута, 36 секунд (19.11.2011 - 00:25) cyberside написал(а):
В $name у нас имя input'а) laugh.gif

Спустя 3 минуты, 36 секунд (19.11.2011 - 00:28) Игорь_Vasinsky написал(а):
cyberside
ого.. там имя инпута а в $_FILES - пусто? кто из нас тормозит?

Спустя 1 минута, 56 секунд (19.11.2011 - 00:30) cyberside написал(а):
if(empty($_FILES['avatarimg'])){
$message = 'файл не загружен';
return false;
}


И так дырочка)

Спустя 23 минуты, 51 секунда (19.11.2011 - 00:54) Игорь_Vasinsky написал(а):
просто во такой код попробуй

<?php
error_reporting(E_ALL);
header("Content-type: text/html; charset=utf-8");
echo '<pre>' . print_r($_POST, 1) . '</pre>';
echo '<pre>' . print_r($_FILES, 1) . '</pre>';
$name = 'avatarimg';
if(!isset($_POST['savenavatar'])){
?>
<form action="" method="post" enctype="multipart/form-data">
<
table class="pe">
<
tr>
<
td class="label">Выбирете новое:</td><td class="text"><input type="file" name="avatarimg" class="pe_text" style="height: 25px; width: 150px;" /></td>
</
tr>
</
table>
<
div style="margin-top: 5px; margin-left: 350px;"><input type="submit" class="mybutton" name="savenavatar" value="сохранить" /></div>
</
form>
<?php
}else{

if(empty($_FILES[$name]))
echo 'файл не загружен';
else
echo 'ok';



}
?>

Спустя 6 минут, 6 секунд (19.11.2011 - 01:00) cyberside написал(а):
Уже загружает, с проблемой разобрался...
Проблема теперь в том, что труколор не хочет заливать теперь второе изображение в цвете и льет его в B&W...

Спустя 42 секунды (19.11.2011 - 01:01) cyberside написал(а):

$src_im = $func($_FILES[$name]['tmp_name']);

$width_big = 150;
$height_big = 210;
$width_small = 52;
$height_small = 52;
$width_mimi = 25;
$height_mini = 25;

$dst_im_big = imagecreatetruecolor($width_big, $height_big);
$dst_im_small = imagecreatetruecolor($width_small, $height_small);
$dst_im_mini = imagecreatetruecolor($width_mini, $height_mini);

imagecopyresampled($dst_im_big, $src_im, 0, 0, 0, 0, $width_big, $height_big, $img[0], $img[1]);
$avatar_big = rtrim($upload_dir, '/').'/usr'.$user_id."_".time().'_big.jpg';
imagejpeg($dst_im_big, $avatar_big, 100);
chmod($avatar_big, 0775);
imagedestroy($src_im);
imagedestroy($dst_im_big);

imagecopyresampled($dst_im_small, $src_im, 0, 0, 0, 0, $width_small, $height_small, $img[0], $img[1]);
$avatar_small = rtrim($upload_dir, '/').'/usr'.$user_id."_".time().'_small.jpg';
imagejpeg($dst_im_small, $avatar_small, 100);
chmod($avatar_small, 0775);
imagedestroy($src_im);
imagedestroy($dst_im_small);

Спустя 32 секунды (19.11.2011 - 01:02) cyberside написал(а):
$avatar_small - B&W...

Спустя 45 секунд (19.11.2011 - 01:02) Игорь_Vasinsky написал(а):
ну для начала то открой секрет в чём была проблема и как нашёл...

Спустя 3 минуты, 41 секунда (19.11.2011 - 01:06) cyberside написал(а):
Может и тупо, но просто поменял название переменной в name=""...
Быстрый ответ:

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