Avatar billede Slettet bruger
28. april 2005 - 10:12 Der er 4 kommentarer og
1 løsning

Billedupload - hvorfor virker det ikke

Jeg har lavet et script til upload af billeder - men kan bare ikke greje, hvorfor det ikke virker.
Siden kalder sig selv - og den overordnede if-sætning afgør, om formularen skal vises eller filen uploades. Upload-feltet kaldes "filnavn".
Variablen $filfolder giver følgende resultat, når den echoes ud:
/customers/WEBSTED.de/WEBSTED.de/httpd.www/finale/designs/fullsize/25.jpg og efterfølges af "fejl i overførsel - sletter post igen". Tallet 25 relaterer sig til en primary key i en database - og burde være god nok.
Der hvor den fejler, er altså i move_uploaded_file($filnavn, $filfolder)-linien - men hvorfor?
Attributter på folderen er iøvrigt også sat til 777


<?php
        $filnavn = $_FILES['filnavn'];
        $vaerknavn = $_POST['vaerknavn'];
        $kategori = $_POST['kategori'];
        $pris = $_POST['pris'];
       
        if (!$filnavn) { ?>

<form action="<?=$PHP_SELF;?>" method="post" enctype="multipart/form-data" name="uploadformular">
  <table width="300" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="126">&nbsp;</td>
      <td width="174" class="bloktekst">Ved brug af knappen herunder, kan du uploade dit design. Efter upload, &aring;bnes en ny side, hvor du kan placere almindelig vr&oslash;vletekst p&aring; en m&aring;de, du finder hensigtsm&aelig;ssig. </td>
    </tr>
    <tr>
      <td class="bloktekst">Filsti</td>
      <td><input name="filnavn" type="file" class="bloktekst"></td>
    </tr>
    <tr>
      <td class="bloktekst">V&aelig;rknavn</td>
      <td class="bloktekst"><input name="vaerknavn" type="text" id="vaerknavn"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><span class="bloktekst">
        <font size="2" face="Arial,Helvetica,Geneva,Swiss,SunSans-Regular">
        <input type="submit" name="send" value="Send" border="0">
      </font>      </span></td>
    </tr>
  </table>
</form>
<? } else {
    require("connect.php");
   
        echo $vaerknavn."<br>";;
        echo $kategori."<br>";
        echo $pris."<br>";
        // Et design er angivet? Læg dette til upload
       
        // Først opretter vi en reference i databasen. Dette gøres først, så vi kan afgøre, hvilket filnavn, det skal ha'
        if (mysql_query("INSERT INTO element (vaerknavn, kategori_id, priskategori) VALUES ('$vaerknavn', '$kategori', '$pris')")) {
            // Ja, success - hent så sidste det netup skrevne ELEMENT_ID - så ved vi nemlig, hvad filen skal hedde
            $nyestepost = mysql_query("SELECT element_id FROM element ORDER BY element_id DESC LIMIT 1");
            $billednavnarray = mysql_fetch_array($nyestepost);
            $billednavn = $billednavnarray['element_id'];

            $filfolder = $_SERVER['DOCUMENT_ROOT']."/finale/designs/fullsize/".$billednavn.".jpg";
echo $filnavn . " " .$filfolder;
            if ( move_uploaded_file($filnavn, $filfolder) ) { echo "Filen blev overført"; }
            else {     mysql_query("DELETE FROM element WHERE element_id = '$billednavn'");
                    echo "Fejl i filoverførsel - sletter post igen";
                }    // Fjern databaseskrivningen igen - der er åbenbart sket en fejl
        } else {
        // Der skete en fejl i databaseskrivningen - hmm....
        echo "Der kunne ikke skrives til databasen - er felterne udfyldt?!?";
        }

} ?>
Avatar billede Slettet bruger
28. april 2005 - 10:18 #1
Har i øvrigt også prøvet at sætte $filnavn lig $_FILES['filnavn']['name'] i linie 2 men uden resultat.
...og der skal også lige nævnes, at den echo'ede $filfolder er korrekt jf. placeringen på ftp-serveren.
Avatar billede thb Nybegynder
28. april 2005 - 10:56 #2
Prøv med den her funktion som jeg har lavet :)

function uploadFiles($file,$til){

if ($file['tmp_name'] != "none") {
  $fra = $file['tmp_name'];
  $move = (function_exists("move_uploaded_file")) ? move_uploaded_file($fra, strtolower($til)) : copy($fra,$til);
  $upload = ($move) ? true : false;   
}else{
  $upload = false;
}
       
return $upload;
}
Avatar billede Slettet bruger
28. april 2005 - 10:58 #3
Det var tmp_name, der var årsagen :-) Hvis du lige poster et svar, får du dine point
Avatar billede Slettet bruger
28. april 2005 - 20:21 #4
...ovenstående kunne misforstås. Det fungerede fint, men for at jeg har mulighed for at give dig point, er du jo som bekendt nødt til at indtaste som "svar" - og ikke "kommentar".
Avatar billede thb Nybegynder
28. april 2005 - 21:42 #5
Super... :D

Thomas
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