Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Генерация названия для файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
A.N.R.I
Отправлено: 16 Января, 2010 - 21:00:08
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




Короче хочу сделать генерацию названия файла аватара. Т.е. если заливали файл noavatar.png его нужно переименовать на другой (типа wqjl2jklk2.png), что б не было замен одной картинки на другую.

На сколько я понял переименовать можно так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $avatar =  rename ($_FILES['file_name']['name'], $new_name)
  3.  


Так вот, мне нужно как-то сгенерировать названия для переменной $new_name, что бы совпадения приближались до 0, и что бы расширения тоже сохранялось. Кто-то подскажет в чем проблема?

Кстати, поставил загрузку аватара на сайт, переместил на хостинг, и иногда сайт в дауне и мне пишет: "Apache is functioning normally" - что делать??


-----
 
 Top
Мелкий Супермодератор
Отправлено: 16 Января, 2010 - 21:16:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Как вариант - использовать id юзера из базы Улыбка
а вообще: http://php.su/functions/?tempnam


-----
PostgreSQL DBA
 
 Top
A.N.R.I
Отправлено: 16 Января, 2010 - 21:23:27
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




Мелкий пишет:
Как вариант - использовать id юзера из базы
хм, можно. Проблем потом, по теории, не должно быть. Но я еще подумаю Радость
(Добавление)
Мелкий, ты есть на ДПК? А то ник знаком Радость
(Добавление)
Есть проблемка при переименовании - как расширения оставить старое??


-----
 
 Top
Мелкий Супермодератор
Отправлено: 16 Января, 2010 - 22:10:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




A.N.R.I пишет:
Есть проблемка при переименовании - как расширения оставить старое??

а зачем? Улыбка


-----
PostgreSQL DBA
 
 Top
A.N.R.I
Отправлено: 16 Января, 2010 - 22:39:30
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




Мелкий пишет:
PHP:
скопировать код в буфер обмена
$ext = substr($filename,strrpos($filename,"."));


Не пашет:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. copy($_FILES['file_name']['tmp_name'],'images/avatar/'.$_FILES['file_name']['name']);
  3.        
  4.         $file_rename = substr($_FILES['file_name']['name'],strrpos($_FILES['file_name']['name'],"."));
  5.         $filename = "".$results5['id']."".$file_rename."";
  6.          $avatar =  rename ($_FILES['file_name']['tmp_name'], $filename);
  7.           $myrowl5 = mysql_query ("UPDATE userlist SET avatar='{$avatar}' WHERE id='$_GET[u]'  ");


-----
 
 Top
JustUserR
Отправлено: 17 Января, 2010 - 12:06:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




A.N.R.I Может использовать uniqid чтобы названия не затирались?


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
A.N.R.I
Отправлено: 17 Января, 2010 - 12:22:52
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




JustUserR пишет:
A.N.R.I Может использовать uniqid чтобы названия не затирались?


а как использовать. Я прочитал описание - эта функции генерирует название на основе микросекунд и т.д, да? А как тогда переименовать, что бы расширение не поменялось?


-----
 
 Top
JustUserR
Отправлено: 17 Января, 2010 - 12:26:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




A.N.R.I Берете имя закачанного файла и explode-ите его по точкам в названии и выбираете последний элемент (По сути расширения файла) - потом делаете uniqid и добавляете к нему расширение


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
A.N.R.I
Отправлено: 17 Января, 2010 - 12:37:01
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




JustUserR пишет:
A.N.R.I Берете имя закачанного файла и explode-ите его по точкам в названии и выбираете последний элемент (По сути расширения файла) - потом делаете uniqid и добавляете к нему расширение

Так?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $pieces = explode(".", $_FILES['file_name']['name']);
  3.  
  4.  
  5. $avatar = "".$results5['id']."_".$results5['login']."".$pieces[1].""
  6.  
  7.  


И у финале должно получиться 1_admin.gif , да?
а если файл будет:
2_a.n.r.i.gif - картинка будет показываться???
(Добавление)
И еще, как уменьшить изображения пропорционально. Т.е. есть изображенния 200х100, а нужно сделать, что бы ширина была не больше за 150px, а высота сама подогналась?

Нашел такое:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. <?
  3. function imageresize($outfile,$infile,$percents,$quality) {
  4.     $im=imagecreatefromjpeg($infile);
  5.     $w=imagesx($im)*$percents/100;
  6.     $h=imagesy($im)*$percents/100;
  7.     $im1=imagecreatetruecolor($w,$h);
  8.     imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));
  9.  
  10.     imagejpeg($im1,$outfile,$quality);
  11.     imagedestroy($im);
  12.     imagedestroy($im1);
  13.     }
  14.  
  15. imageresize("","webcam.jpg",30,75);
  16.  
  17. ?>
  18.  

Как подогнать под мои требования???


-----
 
 Top
andrweb
Отправлено: 17 Января, 2010 - 15:54:15
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: РОССИЯ Ростов-на-Дону


Помог: 0 раз(а)




Мой совет используй функцию time() и сохраняй аватары в одной папке и в базе. Имена в папке никогда не совпадут.

(Отредактировано автором: 17 Января, 2010 - 15:57:15)



-----
Горбатого могила исправит.
 
 Top
A.N.R.I
Отправлено: 17 Января, 2010 - 17:22:08
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




andrweb пишет:
Мой совет используй функцию time() и сохраняй аватары в одной папке и в базе. Имена в папке никогда не совпадут.

Нет, так не пойдет. Уже почти получилось!!!!

Аватар загружает, но пишет:
Warning: rename(9517.jpg,2_user.jpg) [function.rename]: No such file or directory in Z:\home\localhost\www\work\blocks\profile.php on line 233
CODE (text):
скопировать код в буфер обмена
  1.  $pieces = explode(".", $_FILES['file_name']['name']);
  2.  
  3.  $avatar_dir="".$_FILES['file_name']['name']."";
  4. $new_name = "".$results5['id']."_".$results5['login'].".".$pieces[1]."";
  5.  
  6. $avatar =  rename ($avatar_dir, $new_name);
  7.          
  8.          
  9.        
  10.         copy($_FILES['file_name']['tmp_name'],'images/avatar/'.$new_name);
  11.        
  12.           $myrowl5 = mysql_query ("UPDATE userlist SET avatar='{$new_name}' WHERE id='$_GET[u]'  ");


Кстати, как сделать, что бы бралась ПОСЛЕДНЯЯ точка, а то если загрузить аватар a.n.r.i.jpg аватар то есть, но названия 1_a.n.r.i.n


-----
 
 Top
andrweb
Отправлено: 17 Января, 2010 - 17:30:34
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: РОССИЯ Ростов-на-Дону


Помог: 0 раз(а)




Не мучейся. Попробуй тайм и ненадо ничего разбивать и тд. У аватара будет уникальное имя и никаких проблем.


-----
Горбатого могила исправит.
 
 Top
A.N.R.I
Отправлено: 17 Января, 2010 - 17:33:48
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




andrweb пишет:
Не мучейся. Попробуй тайм и ненадо ничего разбивать и тд. У аватара будет уникальное имя и никаких проблем.
На сколько я понял - скинуть в папку, переименовать и в поле БД написать путь к файлу???


-----
 
 Top
andrweb
Отправлено: 17 Января, 2010 - 17:43:27
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: РОССИЯ Ростов-на-Дону


Помог: 0 раз(а)




Цитата:
На сколько я понял - скинуть в папку, переименовать и в поле БД написать путь к файлу???

Да. Таймом преобразовываешь имя. Копируешь файл с преобразованным именем. Заносишь путь к файлу с преобразованным именем в базу под нужным id. И пользуйся. Также таймом можно сохранять и дату добавления. А при выводе пробразовывать обратно в дату.

(Отредактировано автором: 17 Января, 2010 - 17:44:49)



-----
Горбатого могила исправит.
 
 Top
A.N.R.I
Отправлено: 17 Января, 2010 - 17:50:51
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Март 2009  
Откуда: Вінницька обл.


Помог: 0 раз(а)




andrweb пишет:
Да. Таймом преобразовываешь имя. Копируешь файл с преобразованным именем. Заносишь путь к файлу с преобразованным именем в базу под нужным id. И пользуйся. Также таймом можно сохранять и дату добавления. А при выводе пробразовывать обратно в дату.


Так у меня почти тоже. Только переименовую на id_login . расширения прикрепляю после точки (от по этому и нужна помощь) и переношу из tmp в папку images/avatar. А в БД записываю названия файла.
(Добавление)
Если не так: помоги кодом


-----
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB