12. august 2006 - 22:55Der er
24 kommentarer og 1 løsning
Fil upload
Hej eksperter!
Jeg har dette script til at uploade filer, men jeg vil gerne have at det bliver lavet lidt om, så man kan lave filnavnet om + ændre hvor filen skal placeres i disse variabler:
$nytfilnavn = 'blabla'; $mappe = 'der hvor filen skal ligge';
Mit problem er at jeg ikke ved hvordan man laver filnavnet om, og samtidig får filendenelsen med, f.eks. .doc eller .pdf
Jeg ville også blive glad hvis nogen kunne forklare mig hvordan jeg gør så kun .doc og .pdf filer kan uploades :-)
<?PHP $dir = "filer/"; // directory with slash $filename = ""; // leave empty and it will give the file a unique name $maxsize = 2 * 1024; // 2 * 1024 is 2 mb $showArray = true; // true or false
if (isset($_POST['goUpload'])) { if(isset($_FILES)) { if($maxsize <= $_FILES['fil']['size']) { $name = $_FILES['fil']['name']; $filename = (empty($filename)) ? mktime() ."_". md5($name.uniqid()).".".substr($name, strlen($name)-3) : $filename; if(move_uploaded_file($_FILES['fil']['tmp_name'], $dir.$filename)) { echo "Filen er nu blevet uploadet som (<b>".$filename."</b>)<br />"; } else { echo "Filen (<b>".$name."</b>) kunne IKKE blive uploadet!<br />"; } } else { echo "Filen fylder for meget, den må maks fylde ". $maxsize."<br />"; } } else { echo "Der er ikke valgt nogen fil.<br />"; }
$showArray sætter du så bare til false, når du har testet det, så kan du nemlig lige se hvad der sker med filen, og hvilke infomationer man kan hive ud af $_FILES arrayet
Synes godt om
Slettet bruger
12. august 2006 - 23:44#12
Din kode her, den der hedder move_uploaded_file(), du tjekker ikke på om den bliver uploadet, den skriver bare hver gang at filen er nu blevet uploadet :D
du kan sætte en if(move_uploaded_file($parameters)) {} omkring.
kunne der evt. komme noget halløj ind så kun .doc og .pdf filer er gyldige? :-)
Synes godt om
Slettet bruger
12. august 2006 - 23:45#14
jep sec...
Synes godt om
Slettet bruger
12. august 2006 - 23:51#15
<?PHP $dir = "filer/"; // directory with slash $filename = ""; // leave empty and it will give the file a unique name $maxsize = 2 * 1024; // 2 * 1024 is 2 mb $ext = array("doc", "pdf"); // leaves empty if all files extension is okay $showArray = true; // true or false
if (isset($_POST['goUpload'])) { if(isset($_FILES)) { if($maxsize <= $_FILES['fil']['size']) { $name = $_FILES['fil']['name']; $file_ext = substr($name, strlen($name)-3); if(in_array($file_ext, $ext)) { $filename = (empty($filename)) ? mktime() ."_". md5($name.uniqid()).".".$file_ext : $filename; if(move_uploaded_file($_FILES['fil']['tmp_name'], $dir.$filename)) { echo "Filen er nu blevet uploadet som (<b>".$filename."</b>)<br />"; } else { echo "Filen (<b>".$name."</b>) kunne IKKE blive uploadet!<br />"; } } else { echo "Forkert fil type!<br />"; } } else { echo "Filen fylder for meget, den må maks fylde ". $maxsize."<br />"; } } else { echo "Der er ikke valgt nogen fil.<br />"; }
Men der er vist noget om man pr. default kun kan upload filer med maks 2mb, men det kan ændres med denne kode:
<?PHP $dir = "filer/"; // directory with slash $filename = ""; // leave empty and it will give the file a unique name $maxsize = 2 * 1024; // 2 * 1024 is 2 mb ini_set(upload_max_filesize, $maxsize); $ext = array("doc", "pdf"); // leaves empty if all files extension is okay $showArray = true; // true or false
if (isset($_POST['goUpload'])) { if(isset($_FILES)) { if($maxsize <= $_FILES['fil']['size']) { $name = $_FILES['fil']['name']; $file_ext = substr($name, strlen($name)-3); if(in_array($file_ext, $ext)) { $filename = (empty($filename)) ? mktime() ."_". md5($name.uniqid()).".".$file_ext : $filename; if(move_uploaded_file($_FILES['fil']['tmp_name'], $dir.$filename)) { echo "Filen er nu blevet uploadet som (<b>".$filename."</b>)<br />"; } else { echo "Filen (<b>".$name."</b>) kunne IKKE blive uploadet!<br />"; } } else { echo "Forkert fil type!<br />"; } } else { echo "Filen fylder for meget, den må maks fylde ". $maxsize."<br />"; } } else { echo "Der er ikke valgt nogen fil.<br />"; }
Warning: uniqid() expects at least 1 parameter, 0 given in /mounted-storage/home21b/sub001/sc20616-DXDH/studiemedia.dk/community/upload/upload.php on line 65 Filen er nu blevet uploadet som (1155423620_51ac2bf7470c41f1f665c56ede07dc11.doc)
Synes godt om
Slettet bruger
13. august 2006 - 10:12#20
Så skulle fejlen være rettet:
<?PHP $dir = "filer/"; // directory with slash $filename = ""; // leave empty and it will give the file a unique name $maxsize = 2 * 1024; // 2 * 1024 is 2 mb ini_set(upload_max_filesize, $maxsize); $ext = array("doc", "pdf"); // leaves empty if all files extension is okay $showArray = true; // true or false
if (isset($_POST['goUpload'])) { if(isset($_FILES)) { if($maxsize <= $_FILES['fil']['size']) { $name = $_FILES['fil']['name']; $file_ext = substr($name, strlen($name)-3); if(in_array($file_ext, $ext)) { $filename = (empty($filename)) ? mktime() ."_". md5($name.uniqid(rand(0, true))).".".$file_ext : $filename; if(move_uploaded_file($_FILES['fil']['tmp_name'], $dir.$filename)) { echo "Filen er nu blevet uploadet som (<b>".$filename."</b>)<br />"; } else { echo "Filen (<b>".$name."</b>) kunne IKKE blive uploadet!<br />"; } } else { echo "Forkert fil type!<br />"; } } else { echo "Filen fylder for meget, den må maks fylde ". $maxsize."<br />"; } } else { echo "Der er ikke valgt nogen fil.<br />"; }
Rimelig vigtigt når du skal lave et upload script, og en fejl man kan kigge sig blind på mange gange... det er selve formen, da der lige skal tilføjes enctype="multipart/form-data", ellers så kan dit upload script være noget så pænt, men det vil aldrig komme til at virke!
Nr. 2, er self du skal ha' et input felt med type 'file', og det navn du giver den skal du bruge til at rykke filen med. <input type="file" name="fil" />: namet er fil, så derfor skal vi $_FILES['fil']['et_eller_andet'], havde namet nu være uploadfile, så skulle vi skrive $_FILES['uploadfile']['et_eller_andet'].
Jep jeg er med, dog bruger jeg min egen form, hvor der er noget javascript og noget tilknyttet, men jeg tror ikke jeg har en enctype, så det prøver jeg lige og melder tilbage ;)
Jeg siger mangetak for hjælpen, smider du et svar? :-)
Synes godt om
Slettet bruger
13. august 2006 - 18:53#25
Det kan du tro :D
Synes godt om
Ny brugerNybegynder
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.