Avatar billede phpsessid Nybegynder
28. februar 2004 - 18:00 Der er 13 kommentarer og
2 løsninger

unikke uploadfiler

hvordan laves unikke uploadfiler, tænkte lidt på 20 tilfældige bogstaver foran filnavnet...

nogen der har et bedre forslag ?
under alle omstændigheder skal denne ændres...

move_uploaded_file($_FILES["singlefile"]["tmp_name"], $dist . $_FILES["singlefile"]["name"]);
Avatar billede rasmusbg Nybegynder
28. februar 2004 - 18:13 #1
Hvad med et timestamp (år, måned, dag, time, minut, sekund)? Det er da rimeligt unikt.
Avatar billede rasmusbg Nybegynder
28. februar 2004 - 18:15 #2
Det skal selvfølgelig være serverens tid, der skal bruges...
Avatar billede phpsessid Nybegynder
28. februar 2004 - 18:28 #3
ja oki, men hvordan sættes det ind i

move_uploaded_file($_FILES["singlefile"]["tmp_name"], $dist . $_FILES["singlefile"]["name"]);
Avatar billede googolplex Novice
28. februar 2004 - 18:32 #4
Enten:

$unixtimestamp = time();
$fra = $_FILES["singlefile"]["tmp_name"];
$til = $dist . $_FILES["singlefile"]["name"]) . $unixtimestamp;
move_uploaded_file($fra, $til);

Eller også tjekker du om filen allerede findes, hvis den gør omdøber du den til 'filnavn_2' osv.
Avatar billede croview Nybegynder
28. februar 2004 - 18:38 #5
<?
if($submit) {
mt_srand((double)microtime()*1000000);
$unlen=20;
$sn="";
$unchr="abcdefghjkmpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ123456789";
$chrlen=strlen($unchr);
for ($n=1; $n<=$unlen; $n=$n+1)
{
  $x=intval(($chrlen-1+1)*(mt_rand(0,10000000)/10000000)+1);
  $sn=$sn.substr($unchr,$x-1,1);
}
$uploaddir = "test/";
$uploadfile = "$uploaddir$sn".$_FILES['userfile']['name']."";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    print "Billedet blev uploaded.<br><br>";
} else {
    print "Der skete en fejl.<br><br>";
}
}
?>
<form enctype="multipart/form-data" action="<?=$PHP_SELF;?>" method="post">
<input name="userfile" type="file">
<input type="submit" name="submit" value="Upload">
</form>
Avatar billede phpsessid Nybegynder
28. februar 2004 - 18:41 #6
den laver en parseerror i:

$til = $dist . $_FILES["singlefile"]["name"]) . $unixtimestamp;

Parse error: parse error, unexpected ')' in f:\content\upload.php on line 78
Avatar billede croview Nybegynder
28. februar 2004 - 18:43 #7
hvis du skifter
$uploadfile = "$uploaddir$sn.".$_FILES['userfile']['name']."";
ud med
$uploadfile = "$uploaddir$sn".$_FILES['userfile']['name']."";

så får du et punktum efter random koden. altså f.eks: JuPT9DeZ6tNtp96K3sZR.filnavn.jpg
Avatar billede googolplex Novice
28. februar 2004 - 18:44 #8
$til = $dist . $_FILES["singlefile"]["name"] . $unixtimestamp;
Avatar billede croview Nybegynder
28. februar 2004 - 18:44 #9
hov nej, det er jo omvendt.
skift
$uploadfile = "$uploaddir$sn".$_FILES['userfile']['name']."";
ud med:
$uploadfile = "$uploaddir$sn.".$_FILES['userfile']['name']."";
Avatar billede phpsessid Nybegynder
28. februar 2004 - 18:49 #10
Denne duer ikke...

$unixtimestamp = time();
$fra = $_FILES["singlefile"]["tmp_name"];
$til = $dist . $_FILES["singlefile"]["name"] . $unixtimestamp;
move_uploaded_file($fra, $til);
Avatar billede googolplex Novice
28. februar 2004 - 19:09 #11
Nej, for jeg glemte lige, at det timestamp skal smides ind før extension (.), sorry.
Avatar billede phpsessid Nybegynder
28. februar 2004 - 19:26 #12
hvordan skal det så se ud ?
Avatar billede phpsessid Nybegynder
28. februar 2004 - 19:28 #13
Kan det ikke bare sættes ind foran filnavnet ?
Avatar billede googolplex Novice
28. februar 2004 - 19:55 #14
Jo, det kan det vel, har du prøvet ?

$til = $dist . $unixtimestamp . $_FILES["singlefile"]["name"];
Avatar billede phpsessid Nybegynder
28. februar 2004 - 21:01 #15
kommer med en meddelse:

Notice: Undefined index: singlefile in c:\usr\hp\content\upload.php on line 76

linie 76:

move_uploaded_file($_FILES["singlefile"]["tmp_name"], $dist . $_FILES["singlefile"]["name"]);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester