Extrem nybörjare i PHP behöver unika filnamn

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1

Hej på er!

Ja, det här är mitt första inlägg om PHP och jag kan i princip ingenting så jag måste fråga. Jag har en uppladningsfunktion som laddar upp bilder i en och samma mapp och om man döper bilderna till samma namn så blir dom överskrivna. Hur kan jag få unika namn enklast? Uppladdningen går genom en flashfunktion men den använder det bifogade php-scriptet (tror jag). Är det möjligt att lösa det?

Mvh / Peter

<?php
//path to storage
$storage = "userUploads";
//path name of file for storage
$uploadfile = "$storage/" . basename( $_FILES['Filedata']['name'] );
//if the file is moved successfully
if ( move_uploaded_file( $_FILES['Filedata']['tmp_name'] , $uploadfile ) ) {
echo( '1 ' . $_FILES['Filedata']['name']);
//file failed to move
}else{
echo( '0');
}
?>

Kolla här, denna funktion returnerar en slumpmässig sträng på 32 tecken. Den är tyvärr inte garanterad att inte upprepa sig så småningom, men den är tillräckligt slumpmässig för att fungera så att du döper om filerna och placerar dem i lämpligt döpta mappar:

http://se2.php.net/manual/sv/function.uniqid.php

Det finns gott om upplysningar och tips i kommentarerna.

Ursprungligen av Taz_1999:

Kolla här, denna funktion returnerar en slumpmässig sträng på 32 tecken. Den är tyvärr inte garanterad att inte upprepa sig så småningom, men den är tillräckligt slumpmässig för att fungera så att du döper om filerna och placerar dem i lämpligt döpta mappar:

http://se2.php.net/manual/sv/function.uniqid.php

Det finns gott om upplysningar och tips i kommentarerna.

Ursäkta min okunskap men vart i koden lägger jag in detta? Funkar det så duger det utmärkt. Alla filer ligger i en och samma mapp och huvudsaken är att två filer med samma namn inte skriver över varandra vid uppladdningen.

/Peter

  • Medlem
  • Piteå
  • 2007-04-23 01:30

<?php
//path to storage
$storage = "userUploads";
//path name of file for storage
if(!file_exists($storage/".basename( $_FILES['Filedata']['name']))) {
$uploadfile = "$storage/".basename( $_FILES['Filedata']['name'] );
}
else {
$uploadfile = "$storage/blabla_".basename( $_FILES['Filedata']['name'] );
}
//if the file is moved successfully
if ( move_uploaded_file( $_FILES['Filedata']['tmp_name'] , $uploadfile ) ) {
echo( '1 ' . $_FILES['Filedata']['name']);
//file failed to move
}else{
echo( '0');
}
?>

Där har du en kod som sätter ett namn om filen inte finns, och ett annat om den gör det. Läs på om funktionen som det tipsades om här ovanför och implementera den så har du en bra början.

Edit: kasst formulerat

Tack Etna!

Har provat din variant men då laddar den inte upp bilden alls. Finns bildnamnet redan så plockar den den filen, men den lägger inte upp någon ny.

Vad är knas?

/Peter

1
Bevaka tråden