[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Загрузка аватарки на сервер
RCuPeR
Есть картинка, которая подставляется на место аватарки, если пользователь не загрузил свою, проблема в том, что она грузится постоянно, даже если юзер и добавл свой аватар, в БД пошёл путь на картинку "no-avatar.jpg". Слышал, что Денвер может не копировать картинки, вот решил удостоверится.

Скрытый текст
if    (!empty($_POST['fupload'])) //проверяем, отправил    ли пользователь изображение              {              $fupload=$_POST['fupload'];    $fupload = trim($fupload);                 if ($fupload =='' or empty($fupload)) {                                   unset($fupload);// если переменная $fupload пуста, то удаляем ее                                                              }              }            if    (!isset($fupload) or empty($fupload) or $fupload =='')              {              //если переменной не существует (пользователь не отправил    изображение),то присваиваем ему заранее приготовленную картинку с надписью    "нет аватара"              $avatar    = "templates/images/avatars/net-avatara.jpg"; //можете    нарисовать net-avatara.jpg или взять в исходниках              }            else               {                //иначе - загружаем изображение пользователя              $path_to_90_directory    = 'templates/images/avatars/';//папка,    куда будет загружаться начальная картинка и ее сжатая копия                                   if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения                        {                                                  $filename =    $_FILES['fupload']['name'];                                 $source =    $_FILES['fupload']['tmp_name'];                                  $target =    $path_to_90_directory . $filename;                                 move_uploaded_file($source,    $target);//загрузка оригинала в папку $path_to_90_directory                      if(preg_match('/[.](GIF)|(gif)$/',    $filename)) {                       $im    = imagecreatefromgif($path_to_90_directory.$filename) ; //если оригинал был в формате gif, то создаем    изображение в этом же формате. Необходимо для последующего сжатия                       }                       if(preg_match('/[.](PNG)|(png)$/',    $filename)) {                       $im =    imagecreatefrompng($path_to_90_directory.$filename) ;//если    оригинал был в формате png, то создаем изображение в этом же формате.    Необходимо для последующего сжатия                       }                                              if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/',    $filename)) {                       $im =    imagecreatefromjpeg($path_to_90_directory.$filename); //если оригинал был в формате jpg, то создаем изображение в этом же    формате. Необходимо для последующего сжатия                       }             //СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ И ЕГО ПОСЛЕДУЮЩЕЕ СЖАТИЕ    ВЗЯТО С САЙТА www.codenet.ru             // Создание квадрата 90x90              // dest - результирующее изображение               // w - ширина изображения               // ratio - коэффициент пропорциональности             $w    = 90;  //    квадратная 90x90. Можно поставить и другой размер.            // создаём исходное изображение на основе               // исходного файла и определяем его размеры               $w_src    = imagesx($im); //вычисляем ширину              $h_src    = imagesy($im); //вычисляем высоту изображения                       // создаём    пустую квадратную картинку                        // важно именно    truecolor!, иначе будем иметь 8-битный результат                        $dest = imagecreatetruecolor($w,$w);                      //    вырезаем квадратную серединку по x, если фото горизонтальное                        if    ($w_src>$h_src)                        imagecopyresampled($dest, $im, 0, 0,                                           round((max($w_src,$h_src)-min($w_src,$h_src))/2),                                        0, $w, $w,    min($w_src,$h_src), min($w_src,$h_src));                      // вырезаем    квадратную верхушку по y,                        // если фото    вертикальное (хотя можно тоже серединку)                        if    ($w_src<$h_src)                        imagecopyresampled($dest, $im, 0, 0,    0, 0, $w, $w,                                        min($w_src,$h_src),    min($w_src,$h_src));                      // квадратная картинка    масштабируется без вырезок                        if ($w_src==$h_src)                        imagecopyresampled($dest,    $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);             $date=time();    //вычисляем время в настоящий момент.              imagejpeg($dest,    $path_to_90_directory.$date.".jpg");//сохраняем    изображение формата jpg в нужную папку, именем будет текущее время. Сделано,    чтобы у аватаров не было одинаковых имен.            //почему именно jpg? Он занимает очень мало места + уничтожается    анимирование gif изображения, которое отвлекает пользователя. Не очень    приятно читать его комментарий, когда краем глаза замечаешь какое-то    движение.            $avatar    = $path_to_90_directory.$date.".jpg";//заносим в переменную путь до аватара.     $delfull    = $path_to_90_directory.$filename;               unlink    ($delfull);//удаляем оригинал загруженного    изображения, он нам больше не нужен. Задачей было - получить миниатюру.              }              else                        {                                  //в случае    несоответствия формата, выдаем соответствующее сообщение                       exit ("Аватар должен быть в    формате <strong>JPG,GIF или PNG</strong>");                               }              //конец процесса загрузки и присвоения переменной $avatar адреса    загруженной авы              }                  // Далее идет все из первой части статьи,но необходимо    дописать изменение в запрос к базе.               //подключаемся к базе




Спустя 2 минуты, 8 секунд (6.12.2010 - 22:36) RCuPeR написал(а):
Походу забочинил со спойлером. Модеры, поправте плиз, у меня кнопки не работают.

Спустя 1 час, 39 минут, 59 секунд (7.12.2010 - 00:16) ИНСИ написал(а):
RCuPeR в файле pnp.ini (на денвере это папка: usr/local/php5/)

Цитата
post_max_size = 32M


Цитата
; Whether to allow HTTP file uploads.
file_uploads = On

; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = /tmp

; Maximum allowed size for uploaded files.
upload_max_filesize = 200M


значения могут быть другими у тебя, поставь как у меня. Можешь и другие поставить (имею в виду размеры в М)

Спустя 14 часов, 43 минуты, 14 секунд (7.12.2010 - 14:59) RCuPeR написал(а):
Не пойму как это связано ?!
В базу-то заносится изображение. Вот только аватарка, можно сказать, стандартная:
templates/images/avatars/net-avatara.jpg


Получается, что у всех моих +пользователей одна авка, а они-то выбирали свою...

Вот, что ещё заметил: в php.ini по дефалту директива для загрузки, я так понял, любих файлов идёт в директиву /tmp ?

Цитата
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
upload_tmp_dir = /tmp

Спустя 3 минуты, 56 секунд (7.12.2010 - 15:03) ИНСИ написал(а):
Цитата
Не пойму как это связано ?!

RCuPeR я думал у тебя не загружается фото пользователя.

Покажи запрос, который вставляет в БД выбранную аватарку.


Спустя 7 минут, 9 секунд (7.12.2010 - 15:10) RCuPeR написал(а):
mysql_query ("INSERT INTO user (login,password,avatar)    VALUES('$login','$password','$avatar')");

Спустя 2 минуты, 57 секунд (7.12.2010 - 15:13) RCuPeR написал(а):
Вот сам скрпт:

if    (!empty($_POST['fupload']))
{
$fupload=$_POST['fupload']; $fupload = trim($fupload);
if ($fupload =='' or empty($fupload)) {
unset($fupload);
}
}

if (!isset($fupload) or empty($fupload) or $fupload =='')
{
$avatar = "templates/images/avatars/net-avatara.jpg";
}
else
{
$path_to_90_directory = 'templates/images/avatars/';

if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))
{
$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);

if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ;
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename);
}

$w = 90;
$w_src = imagesx($im);
$h_src = imagesy($im);
$dest = imagecreatetruecolor($w,$w);

if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
$date=time();
imagejpeg($dest, $path_to_90_directory.$date.".jpg");
$avatar = $path_to_90_directory.$date.".jpg";

$delfull = $path_to_90_directory.$filename;
unlink ($delfull);
}
else
{
exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");
}

}

Спустя 2 часа, 2 минуты, 45 секунд (7.12.2010 - 17:16) ИНСИ написал(а):
RCuPeR капец.... тебе надо весь скрипт менять smile.gif В общем, если хочешь, за плату, я тебе все сделаю... Ищи меня в скайпе....

Спустя 1 час, 17 минут, 43 секунды (7.12.2010 - 18:34) RCuPeR написал(а):

Спустя 9 минут, 5 секунд (7.12.2010 - 18:43) ИНСИ написал(а):
RCuPeR я тоже именно с этой статьи начинал делать загрузку фото smile.gif А что там надо тебе?

Спустя 20 минут, 22 секунды (7.12.2010 - 19:03) RCuPeR написал(а):
Ну смотри, мне надо, что бы пользователь могу загрузить аватарку, примерно, любого размера, которая потом сжимается до нужных мне размеров. Например с 120х120 до 80х80. И всё, а так-то самый обычный скрипт загрузки картинок на сервак =)

Но, если мою задумку будет очень сложно реализовать - придётся пользователей ограничить в размере их авки. В общем ничего страшного, в деталях - не удобно.


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

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