<?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 написал(а):
удивительное наблюдение.
Вопрос 2: почему в нём пустота?
Спустя 5 минут, 25 секунд (18.11.2011 - 23:47) cyberside написал(а):
Гугл не знает(
Но теоритически данные не передаються... Но вот почему, гугль не знает..
Но теоритически данные не передаються... Но вот почему, гугль не знает..
Спустя 4 минуты, 50 секунд (18.11.2011 - 23:51) Игорь_Vasinsky написал(а):
Цитата |
Но теоритически данные не передаються... |
Блин.. я ведь так долго могу
а практически?
разве ты узнаешь пуст ли массив $_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] => сохранить
)
(
[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
(
)
Вот такая вот штука
Оно мне ни очем (по крайней мере новом) не говорит)
И так понятно что не передает...
(
)
Вот такая вот штука
Оно мне ни очем (по крайней мере новом) не говорит)
И так понятно что не передает...
Спустя 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'а)
Спустя 3 минуты, 36 секунд (19.11.2011 - 00:28) Игорь_Vasinsky написал(а):
cyberside
ого.. там имя инпута а в $_FILES - пусто? кто из нас тормозит?
ого.. там имя инпута а в $_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...
Проблема теперь в том, что труколор не хочет заливать теперь второе изображение в цвете и льет его в 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=""...