17. juli 2004 - 17:31
Der er
16 kommentarer og 2 løsninger
Upload-script skal omdøbe filer
Mit upload script virker glimrende, men jeg kunne godt tænke mig, at det gav hver fil et unikt id.. altså et nummer som ikke gentages. Også gerne brugerens nummer ($bruger_id) Min kode er nedenfor: -- cut -- <?php if ($_POST['submit']) { $bruger_id = "1"; //stien, hvortil filer skal uploades, her et subdir til roden af domænet $dist = "/home/web/uploadtest/"; //FLERE FILER PÅ SAMME TID if (isset($_FILES["upfile"])) { echo"Ønskede filer til upload:<p>\n"; $antal = 0; $filetyper = array("image/gif", "image/jpeg", "image/pjpeg", "image/png"); $maxsize = "102400"; //Find antallet af filer til upload med en for-løkke for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) { if ($_FILES["upfile"]["name"][$i] !="") { //Læg en til $antal for hver fil. $antal++; if (in_array($_FILES['upfile']['type'][$i], $filetyper) && $_FILES['upfile']['size'][$i] < $maxsize) { if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) { move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i]); //til brug for info om filtyper $str1 = $_FILES["upfile"]["name"][$i]; $str2 = $_FILES["upfile"]["size"][$i]; $str3 = $_FILES["upfile"]["type"][$i]; //gemmer oplysninger i databasen open(); $insertSQL = "INSERT INTO filer (fil_navn, type, size) values ('$str1', '$str3', '$str2')"; mysql_query($insertSQL); close(); echo $str1 ." er blevet uploadet!<BR>"; }else{ echo"Upload til serveren skete ikke!"; } } else { echo"Filtypen ikke tilladt til upload eller den er for stor..."; } } } if($antal < 1) { //Hvis der ingen filer er valgt echo"Husk at vælg en eller flere filer til upload!"; }else{ } } } else { echo ' <form enctype="multipart/form-data" METHOD=post action="'.$php_self.'"> <DIV CLASS="normal">Vælg en eller flere opgaver til upload:<BR> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br><p> <input type="submit" name="submit" value="Upload" class="button"></center><p> </form>'; } ?>
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Måske du kan bruger det her... move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i]); $ext = explode(".", $_FILES["upfile"]["name"]); $newName = $dist . md5(time()) . $bruger_id . "." . $ext[1]; rename($dist . $_FILES["upfile"]["name"], $newName);
Sorry $ext = explode(".", $_FILES["upfile"]["name"][]$i); $newName = $dist . md5(time()) . $bruger_id . "." . $ext[1]; rename($dist . $_FILES["upfile"]["name"][$i], $newName);
aaa så smuttede $i skulle jo være $ext = explode(".", $_FILES["upfile"]["name"][$i]);
Hvor skal jeg indsætte det i scriptet?
<?php if ($_POST['submit']) { $bruger_id = "1"; //stien, hvortil filer skal uploades, her et subdir til roden af domænet $dist = "/home/web/uploadtest/"; //FLERE FILER PÅ SAMME TID if (isset($_FILES["upfile"])) { echo"Ønskede filer til upload:<p>\n"; $antal = 0; $filetyper = array("image/gif", "image/jpeg", "image/pjpeg", "image/png"); $maxsize = "102400"; //Find antallet af filer til upload med en for-løkke for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) { if ($_FILES["upfile"]["name"][$i] !="") { //Læg en til $antal for hver fil. $antal++; if (in_array($_FILES['upfile']['type'][$i], $filetyper) && $_FILES['upfile']['size'][$i] < $maxsize) { if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) { move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i]); $ext = explode(".", $_FILES["upfile"]["name"][$i]); $newName = $dist . md5(time()) . $bruger_id . "." . $ext[1]; rename($dist . $_FILES["upfile"]["name"][$i], $newName); //til brug for info om filtyper $str1 = $_FILES["upfile"]["name"][$i]; $str2 = $_FILES["upfile"]["size"][$i]; $str3 = $_FILES["upfile"]["type"][$i]; //gemmer oplysninger i databasen open(); $insertSQL = "INSERT INTO filer (fil_navn, type, size) values ('$str1', '$str3', '$str2')"; mysql_query($insertSQL); close(); echo $str1 ." er blevet uploadet!<BR>"; }else{ echo"Upload til serveren skete ikke!"; } } else { echo"Filtypen ikke tilladt til upload eller den er for stor..."; } } } if($antal < 1) { //Hvis der ingen filer er valgt echo"Husk at vælg en eller flere filer til upload!"; }else{ } } } else { echo ' <form enctype="multipart/form-data" METHOD=post action="'.$php_self.'"> <DIV CLASS="normal">Vælg en eller flere opgaver til upload:<BR> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br><p> <input type="submit" name="submit" value="Upload" class="button"></center><p> </form>'; } ?>
Og så får den bare et navn efter tidspunktet den er uploadet?
ja det kan man godt sige prøv se på php.net og søg efter time. Men prøv det her istedet så skriver du også det rigtige ind i din db. <?php if ($_POST['submit']) { $bruger_id = "1"; //stien, hvortil filer skal uploades, her et subdir til roden af domænet $dist = "/home/web/uploadtest/"; //FLERE FILER PÅ SAMME TID if (isset($_FILES["upfile"])) { echo"Ønskede filer til upload:<p>\n"; $antal = 0; $filetyper = array("image/gif", "image/jpeg", "image/pjpeg", "image/png"); $maxsize = "102400"; //Find antallet af filer til upload med en for-løkke for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) { if ($_FILES["upfile"]["name"][$i] !="") { //Læg en til $antal for hver fil. $antal++; if (in_array($_FILES['upfile']['type'][$i], $filetyper) && $_FILES['upfile']['size'][$i] < $maxsize) { if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) { move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i]); // adskiller filnavn fra filtype $ext = explode(".", $_FILES["upfile"]["name"][$i]); $newName = mt_rand(time(), 1). "_" . $bruger_id . "." . $ext[1]; rename($dist . $_FILES["upfile"]["name"][$i], $dist."".$newName); //til brug for info om filtyper $str1 = $newName; $str2 = $_FILES["upfile"]["size"][$i]; $str3 = $_FILES["upfile"]["type"][$i]; echo $str1." - $i<br />"; //gemmer oplysninger i databasen open(); $insertSQL = "INSERT INTO filer (fil_navn, type, size) values ('$str1', '$str3', '$str2')"; mysql_query($insertSQL); close(); echo $str1 ." er blevet uploadet!<BR>"; }else{ echo"Upload til serveren skete ikke!"; } } else { echo"Filtypen ikke tilladt til upload eller den er for stor..."; } } } if($antal < 1) { //Hvis der ingen filer er valgt echo"Husk at vælg en eller flere filer til upload!"; }else{ } } } else { echo ' <form enctype="multipart/form-data" METHOD=post action="'.$php_self.'"> <DIV CLASS="normal">Vælg en eller flere opgaver til upload:<BR> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br><p> <input type="submit" name="submit" value="Upload" class="button"></center><p> </form>'; } ?>
Hvad sker der så hvis man uploader 2. gang? fortsætter den så bare i tal-rækken?
Hvis du vil være sikker på at filnavnet bliver unikt så brug den her. $newName = md5(uniqid(rand(), true)). "_" . $bruger_id . "." . $ext[1];
17. juli 2004 - 20:22
#10
OK.. jeg tester det lige imorgen...
17. juli 2004 - 20:22
#11
:-)
19. juli 2004 - 12:50
#12
OK, det ser ud til at virke glimrende.. Men hvorfor skriver den xxx_1.jpg - 0 xxx_1.jpg er blevet uploadet! Hvad skal det xxx_1.jpg - 0 til for?
19. juli 2004 - 16:35
#13
Nu er xxx_1.jpg - 0 og resten af xxx_1.jpg væk ellers skal du bare rette eller slette alle steder der står echo"Noget text"; <?php if ($_POST['submit']) { $bruger_id = "1"; //stien, hvortil filer skal uploades, her et subdir til roden af domænet $dist = "/home/web/uploadtest/"; //FLERE FILER PÅ SAMME TID if (isset($_FILES["upfile"])) { echo"Ønskede filer til upload:<p>\n"; $antal = 0; $filetyper = array("image/gif", "image/jpeg", "image/pjpeg", "image/png"); $maxsize = "102400"; //Find antallet af filer til upload med en for-løkke for($i = 0; $i < count($_FILES["upfile"]["name"]); $i++) { if ($_FILES["upfile"]["name"][$i] !="") { //Læg en til $antal for hver fil. $antal++; if (in_array($_FILES['upfile']['type'][$i], $filetyper) && $_FILES['upfile']['size'][$i] < $maxsize) { if(is_uploaded_file($_FILES["upfile"]["tmp_name"][$i])) { move_uploaded_file($_FILES["upfile"]["tmp_name"][$i], $dist . $_FILES["upfile"]["name"][$i]); // adskiller filnavn fra filtype $ext = explode(".", $_FILES["upfile"]["name"][$i]); $newName = mt_rand(time(), 1). "_" . $bruger_id . "." . $ext[1]; rename($dist . $_FILES["upfile"]["name"][$i], $dist."".$newName); //til brug for info om filtyper $str1 = $newName; $str2 = $_FILES["upfile"]["size"][$i]; $str3 = $_FILES["upfile"]["type"][$i]; //gemmer oplysninger i databasen open(); $insertSQL = "INSERT INTO filer (fil_navn, type, size) values ('$str1', '$str3', '$str2')"; mysql_query($insertSQL); close(); echo "Filen er blevet uploadet!<BR>"; }else{ echo"Upload til serveren skete ikke!"; } } else { echo"Filtypen ikke tilladt til upload eller den er for stor..."; } } } if($antal < 1) { //Hvis der ingen filer er valgt echo"Husk at vælg en eller flere filer til upload!"; }else{ } } } else { echo ' <form enctype="multipart/form-data" METHOD=post action="'.$php_self.'"> <DIV CLASS="normal">Vælg en eller flere opgaver til upload:<BR> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br> <input name="upfile[]" type="file" size="48" class="button"><br><p> <input type="submit" name="submit" value="Upload" class="button"></center><p> </form>'; } ?>
19. juli 2004 - 19:19
#14
Tak...
19. juli 2004 - 22:52
#15
Velbekomme :-) og så syntes jeg nok at 150 point lige er i overkanten, stik mig 30 nu når du er så gavmild.
20. juli 2004 - 09:34
#16
ok, du får halvdelen så :]
20. juli 2004 - 09:34
#17
:]
20. juli 2004 - 09:50
#18
Prøv at se dig lidt om på eksperten og se hvad de forskellige giver af point, det er alt for mange point at give for dit problem. Men jeg takker da mange gange for de 75 point, selv om jeg nu syntes det lige er i overkanten. Håber du får en god sommer. :-)
Vi tilbyder markedets bedste kurser inden for webudvikling