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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
zypikov
Отправлено: 14 Декабря, 2011 - 20:54:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


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




Как быть если все фотографии записываются в одну папку? Ведь при большом числе пользователей очень большая вероятность того что хотя бы два из загрузят одну фотку с одинковым именем. Как поступают в этом случае?


-----
У всего есть обратная сторона.
 
 Top
EuGen Администратор
Отправлено: 14 Декабря, 2011 - 20:55:53
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




http://php.su/functions/?uniqid

Можете применить к ней еще md5, чтобы получить 32-символьное имя


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
zypikov
Отправлено: 15 Декабря, 2011 - 03:55:30
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


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




Можно ли сделать так, чтобы файл в базе хранился под этим сгенерированным имененем, а показывался пользователю с именем, которое он использовал при загрузке?


-----
У всего есть обратная сторона.
 
 Top
etoYA
Отправлено: 15 Декабря, 2011 - 05:27:43
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


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




PHP:
скопировать код в буфер обмена
  1. $photo = 'photos.jpg'; // загружаемая фотка
  2. $uniqid = uniqid($photo); // генерация уникального айди (для записи в базу)
  3. $parse = substr($uniqid,0,-13); // удаление уникального айди (для выборки).
  4.  


Вот на проверку форма:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. echo <<<END
  4.         <form method="post">
  5.         <input type="text" name="photo" />
  6.         <input type="submit" name="submit" />
  7.         </form>
  8. END;
  9. if (isset($_POST['submit'])) {
  10. $photo = $_POST['photo'];
  11. $uniqid = uniqid($photo);
  12. $parse = substr($uniqid,0,-13);
  13. echo $uniqid.'<br />';
  14. echo $parse;
  15. }
  16. ?>
  17.  

(Отредактировано автором: 15 Декабря, 2011 - 05:58:52)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Декабря, 2011 - 08:46:30
Post Id



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


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


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




zypikov, собственно, если вы будете сохранять в базу информацию о том, кто загрузил файл и пр. данные, то можете и использовать автоинкрементное поле в качестве имени файла.
В другое поле сохраняете оригинальное имя файла - его и отображаете пользователю.


-----
PostgreSQL DBA
 
 Top
Panoptik
Отправлено: 15 Декабря, 2011 - 08:52:44
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




я уникальные имена составляю из комбинации time().'_'.basename($_FILES['myfile']['tmp_name'])


-----
Just do it
 
 Top
zypikov
Отправлено: 16 Декабря, 2011 - 07:38:26
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


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




Мелкий пишет:
zypikov, собственно, если вы будете сохранять в базу информацию о том, кто загрузил файл и пр. данные, то можете и использовать автоинкрементное поле в качестве имени файла.
В другое поле сохраняете оригинальное имя файла - его и отображаете пользователю.


Вы удивитесь Мелкий, но мои базы представляют собой текстовые файлы. Я полностью сам пишу механизм ввода, хранения, обработки. Конечно же при помощи сайтов и других подобных скритов. Но теперь уже вижу, что все-таки лучше использовать мускул. Мускул то я вообщем знаю, но поле autoIncriment(так помойму) никогда не использовал. Не знаю, что оно вообще такое.
Я кстати так и хотел сделать - создать дополнтельное поле(что-то вроде псевдонима) для имени файла и этим псевдонимом при вывводе подменять оригинальное имя файла.


-----
У всего есть обратная сторона.
 
 Top
Мелкий Супермодератор
Отправлено: 16 Декабря, 2011 - 08:59:13
Post Id



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


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


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




zypikov пишет:
Вы удивитесь Мелкий, но мои базы представляют собой текстовые файлы.

Почему же удивлюсь?

zypikov пишет:
Мускул то я вообщем знаю, но поле autoIncriment(так помойму) никогда не использовал.

Взаимоисключающие параграфы.


-----
PostgreSQL DBA
 
 Top
zypikov
Отправлено: 17 Декабря, 2011 - 02:52:28
Post Id



Частый гость


Покинул форум
Сообщений всего: 219
Дата рег-ции: Нояб. 2010  


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




Мелкий пишет:
Почему же удивлюсь?

Ну на форуме, когда дело заходит о базе, я вижу только Мускул. Я думал, что хранение инфы в текстовых файлах умирает (так же как ereg_* для регулярок. Теперь буду знать что нужно использовать preg_*). Ну а потом реляционные Бд с ихним механизмом транзакций все-таки обеспечивают лучшую сохранность данных. Ведь если использовать текстовые файлы, нужен обязательно механизм который бы не позволял пользователям одновременно писать инфу в один текстовый файл.

Цитата:
Взаимоисключающие параграфы.

Я не сказал, что знаю весь Мускул)

(Отредактировано автором: 17 Декабря, 2011 - 02:55:18)



-----
У всего есть обратная сторона.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Хранение данных, их вывод и обработка »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB