Avatar billede ahrensberg Nybegynder
09. april 2003 - 08:48 Der er 5 kommentarer og
1 løsning

Upload af .jpg, .gif osv. bliver til .tmp fil.

Jeg bruger følgende PHP script til at uploade billeder:

$pos = strlen($billedfil[$i])-strrpos($billedfil[$i], ".")-1;
$efternavn = substr($billedfil[$i], -$pos);
    echo "skobilleder/$artikelnr"."_"."$i"."."."$efternavn";
    echo "</TD></TR>\n<TR><TD COLSPAN=2><BR></TD></TR>\n\n";
    copy ($billedfil[$i],"../skobilleder/$artikelnr"."_"."$i"."."."$efternavn");
}

Scriptet skal uploade filen, aflæse efternavnet, ændre det filnavnet, og sætter det rigtige efternavn ind.

Det virker fint på min egen maskine med Apache, men smider jeg det op på nettet skriver den ikke rigtigt efternavn, men istedet .tmp! Nogen der har en idé til hvorfor?
Avatar billede ostehamster Nybegynder
09. april 2003 - 09:09 #1
Du må ikke hænge mig op på det, men jeg mener man i php.ini kan sætte det sådan, at alt bliver gemt som .tmp

F.eks. så ingen uploade et php script, der ligger serveren.

Men du kan vel omdøbe det:
http://dk.php.net/manual/en/function.copy.php
Avatar billede schaefner Juniormester
09. april 2003 - 09:11 #2
Uteset:

<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="billedfil[]"><br>
<input type="file" name="billedfil[]"><br>
<input type="file" name="billedfil[]"><br>
<input type="file" name="billedfil[]"><br>
<input type="submit" name="upload" value="Upload"">
</form>
<hr>

<?php
if (isset($_POST['upload'])) {
  for($i=0; $i < count($_FILES['billedfil']['name']); $i++) {
    if($_FILES['billedfil']['name'] != "") {
      $dist = "../skobilleder/";
      $path = pathinfo($_FILES['billedfil']['name'][$i]);
      $ext = $path["extension"];
      $filnavn = "$artikelnr_$i.$ext";
      move_uploaded_file($_FILES['billedfil']['tmp_name'][$i], $dist.$filnavn);
    }
  }
}
?>
Avatar billede schaefner Juniormester
09. april 2003 - 10:01 #3
En lille rettelse:

<?php
if (isset($_POST['upload'])) {
  for($i=0; $i < count($_FILES['billedfil']['name']); $i++) {
    if($_FILES['billedfil']['name'] != "") {
      $dist = "../skobilleder/";
      $path = pathinfo($_FILES['billedfil']['name'][$i]);
      $ext = $path["extension"];
      $filnavn = $artikelnr."_".$i.".".$ext;
      move_uploaded_file($_FILES['billedfil']['tmp_name'][$i], $dist.$filnavn);
    }
  }
}
?>

Har testet den og den virker fint på min server.
Avatar billede schaefner Juniormester
09. april 2003 - 11:39 #4
Men virker den på din? :)
Avatar billede spoonbender Nybegynder
09. april 2003 - 19:49 #5
Uploadede filer bliver gemt som noget tmp-snask... $_FILES[][] indeholder både det oprindelige filnavn ($_FILES['billedfil']['name'] som du kan ændre i vha. diverse string-funktioner) og tmp-navnet ($_FILES['billedfil']['tmp_name'])
Når du har disse to kan du kopiere den til "../skobilleder/" eksempelvis med move_uploaded_file()
Avatar billede ahrensberg Nybegynder
23. februar 2004 - 21:15 #6
Lukker
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