За последние 24 часа нас посетили 20659 программистов и 1012 роботов. Сейчас ищут 368 программистов ...

Переименование изображения при загрузке

Тема в разделе "PHP для новичков", создана пользователем Am1d, 6 апр 2009.

  1. Am1d

    Am1d Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте. Прошу вашей помощи по такому вопросу:

    Есть скрипт загрузки изображения в директорию:

    PHP:
    1.     //regular photo
    2.         if (isset($_FILES["picture"]) && $_FILES["picture"]["name"] && preg_match('/\.(jpg|jpeg|gif|jpe|pcx|bmp)$/i', $_FILES["picture"]["name"])) //upload
    3.         {
    4.                        
    5.  
    6.  
    7.             $_FILES["picture"]["name"] = str_replace(" ","_",$_FILES["picture"]["name"]);
    8.             $r = move_uploaded_file($_FILES["picture"]["tmp_name"], "./products_pictures/".$_FILES["picture"]["name"]);
    9.             if (!$r) //failed 2 upload
    10.             {
    11.                 echo "<center><font color=red>".ERROR_FAILED_TO_UPLOAD_FILE."</font>\n<br><br>\n";
    12.                 echo "<a href=\"javascript:window.close();\">".CLOSE_BUTTON."</a></center></body>\n</html>";
    13.                 exit;
    14.             }
    15.  
    16.             SetRightsToUploadedFile( "./products_pictures/".$_FILES["picture"]["name"] );
    17.  
    18.             $s .= ", picture='".$_FILES["picture"]["name"]."'";
    19.             $s1.= ", picture='".$_FILES["picture"]["name"]."'";
    20.         }

    Подскажите, пожалуйста, как при загрузке дать изображению случайное имя. Допустим, чтобы загруженный image.jpg переименовывался в h2h28ds7s2kdf.jpg
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
  3. Am1d

    Am1d Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    3
    Симпатии:
    0
    А можно поподробнее? Я не программист...
     
  4. kas1e

    kas1e Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    280
    Симпатии:
    0
    Для параноиков:
    PHP:
    1. md5(rand(1,1000).time().$_FILES["picture"]["name"]);
    чем не вариант? уникальней некуда :)

    для нормальных юзеров можно без генератора случайных чисел, либо без имени файла, тоже врятли что-то совпадет ;)
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    для не программистов.
    Вычленяем расширение файла (как сделать — уйма вариантов в нете), смотрим пример в uniqid, так же генерируем имя.расширение, в строке
    $_FILES["picture"]["name"] заменяем на сгенеренное имя
     
  6. Am1d

    Am1d Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    3
    Симпатии:
    0
    Извините за тупой вопрос: в какою строку это нужно добавить?

    Не в паранойе дело. Просто при добавлении изображения, если файл с таким именем существует, его заменит новый файл. А это не есть хорошо.
     
  7. kas1e

    kas1e Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    280
    Симпатии:
    0
    это выдаст уникальное имя, где сохраняем - там и вставляем.

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