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"]);
Annonceindlæg fra Computerworld
28. februar 2004 - 18:13
#1
Hvad med et timestamp (år, måned, dag, time, minut, sekund)? Det er da rimeligt unikt.
28. februar 2004 - 18:15
#2
Det skal selvfølgelig være serverens tid, der skal bruges...
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"]);
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.
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>
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
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
28. februar 2004 - 18:44
#8
$til = $dist . $_FILES["singlefile"]["name"] . $unixtimestamp;
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']."";
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);
28. februar 2004 - 19:09
#11
Nej, for jeg glemte lige, at det timestamp skal smides ind før extension (.), sorry.
28. februar 2004 - 19:26
#12
hvordan skal det så se ud ?
28. februar 2004 - 19:28
#13
Kan det ikke bare sættes ind foran filnavnet ?
28. februar 2004 - 19:55
#14
Jo, det kan det vel, har du prøvet ? $til = $dist . $unixtimestamp . $_FILES["singlefile"]["name"];
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"]);
Vi tilbyder markedets bedste kurser inden for webudvikling