Avatar billede theblueman Nybegynder
11. december 2006 - 08:06 Der er 28 kommentarer og
1 løsning

Hvordan får jeg dette upload-script til at virke?

Hej,

Jeg skal lavet en hjemmeside hvor det er muligt at uploade billeder. Er bestemt ikke nogen ørn til PHP og er rendt ind i et problem. Jeg har kopieret følgende kode fra www.w3schools.com og lagt det ind i rodmappen på min server.

upload_form.php:
<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>


upload_file.php:
<?php
if (($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
&& ($_FILES["file"]["size"] < 500000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>


Jeg har forsøgt at uploade et billede ved navn film.jpg som ikke overskrider den maksimale størrelse.

Jeg får følgende resultat:

Upload: film.jpg
Type: image/jpeg
Size: 271.853515625 Kb
Temp file: /tmp/phpdn60Bx
Stored in: upload/film.jpg

og har oprettet en mappe ved navnet upload. Der bliver dog ikke lagt noget op på serveren. Har søgt den hele igennem.

Er der nogen der kan hjælpe mig med dette problem?



Mvh
Lars
Avatar billede kinderaeg Nybegynder
11. december 2006 - 09:00 #1
Prøv nedenstående:

move_uploaded_file($_FILES["file"]["tmp_name"], $_SERVER['DOCUMENT_ROOT']."upload/".$_FILES["file"]["name"]);
Avatar billede theblueman Nybegynder
11. december 2006 - 09:51 #2
Jeg indsatte nu dit forslag og fik stadig en fin tilbagemelding:


Upload: film.jpg
Type: image/jpeg
Size: 271.853515625 Kb
Temp file: /tmp/phpXDi2Nl
Stored in: upload/film.jpg

Men der er stadig ikke flyttet noget op på serveren.

Det skal lige nævnes at jeg kører Mitel Netwoks 6000 som serverprogram på min server og kører min stationære PC's internetforbindelse gennem denne server. Har også sat PHPMyAdmin 2.6.4 op på denne server.
Avatar billede coderdk Praktikant
11. december 2006 - 10:29 #3
Har du husket at chmod'e upload-folderen til 777? Evt. vha. dit FTP-program?
Avatar billede theblueman Nybegynder
11. december 2006 - 10:33 #4
Jeg bruger Dreamweaver 8. Kan jeg gøre det med det program? Hvis ikke hvilket FTP-program vil du anbefale mig at bruge? Sidst jeg brugte et var tilbage i 1996.
Avatar billede coderdk Praktikant
11. december 2006 - 10:34 #5
Aner ikke om Dreamweaver kan :) Jeg har FileZilla installeret: http://filezilla.sf.net/
Avatar billede coderdk Praktikant
11. december 2006 - 10:35 #6
Hvis du har ssh-adgang er det jo bare: chmod 777 upload
Avatar billede theblueman Nybegynder
11. december 2006 - 11:03 #7
har nu installeret filezilla og oprettet forbindelse til min server men jeg får kun 2 mapper frem.... og dem kan jeg ikke bruge.
Avatar billede theblueman Nybegynder
11. december 2006 - 11:12 #8
nu har jeg fået alle mine mapper at se

Hvordan ændrer jeg så rettighederne?
Avatar billede theblueman Nybegynder
11. december 2006 - 11:16 #9
Jeg har nu prøvet at ændre rettighederne men kan ikke få det til at virke...

Kan man smide et skærmbillede ind her?
Avatar billede coderdk Praktikant
11. december 2006 - 11:18 #10
Nope, men i menuen "View" prøv "Show hidden files" :)
Avatar billede coderdk Praktikant
11. december 2006 - 11:19 #11
Højreklik på mappen, vælg "File attributes" og i "Numeric value" skriv 777
Avatar billede theblueman Nybegynder
11. december 2006 - 11:25 #12
Det var det jeg havde gjort men kan ikke se nogen ændring ud for mappen?
Avatar billede theblueman Nybegynder
11. december 2006 - 11:26 #13
kan det have noget med min opsætning i mit Mitel networks 6000 software?
Avatar billede coderdk Praktikant
11. december 2006 - 11:35 #14
Nej du kan ikke se noget, andet end at uploads burde begynde at virke :)
Avatar billede coderdk Praktikant
11. december 2006 - 11:36 #15
I øvrigt bør du ikke bruge "file" som navn, brug f.eks. "userfile" eller lignende :)
Avatar billede coderdk Praktikant
11. december 2006 - 11:37 #16
Prøv i toppen af scriptet at skrive:

error_reporting( E_ALL );

og lav:

      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];

om til:

      if ( move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]) )
      {
        echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
      else
      {
        echo "Failed to move the file...";
      }
Avatar billede theblueman Nybegynder
11. december 2006 - 11:48 #17
Får følgende fejlmeddelelse:

Upload: film.jpg
Type: image/jpeg
Size: 271.853515625 Kb
Temp file: /tmp/phpyyBdF0
Failed to move the file...

Er lige fraværende en time eller lidt mere!
Avatar billede theblueman Nybegynder
11. december 2006 - 12:41 #18
Så er jeg tilbage....

Er der andre nuligheder?
Avatar billede coderdk Praktikant
11. december 2006 - 12:47 #19
Prøvede du at sætte: error_reporting( E_ALL ); i toppen?
Den får ikke lov at flytte filen over... Prøv at lave:

    if ( move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]) )

om til:

    $pth = realpath( "upload" ) . "/" . $_FILES["file"]["name"];
    echo "Trying to move to $pth<br>";
    if ( move_uploaded_file($_FILES["file"]["tmp_name"],
      $pth) )
Avatar billede theblueman Nybegynder
11. december 2006 - 13:20 #20
Får nu følgende meddelelse:

Upload: film.jpg
Type: image/jpeg
Size: 271.853515625 Kb
Temp file: /tmp/phpXHVyFx
Trying to move to /home/e-smith/files/ibays/Primary/html/upload/film.jpg
Failed to move the file...
Avatar billede coderdk Praktikant
11. december 2006 - 13:31 #21
Prøv lige i toppen at skrive:

echo "<b>Kan ".(is_writable("upload")?"GODT":"IKKE")." skrive til upload/</b><br>";
Avatar billede theblueman Nybegynder
11. december 2006 - 13:54 #22
Resultatet:

Kan IKKE skrive til upload/
Upload: film.jpg
Type: image/jpeg
Size: 271.853515625 Kb
Temp file: /tmp/phpBimCAv
Trying to move to /home/e-smith/files/ibays/Primary/html/upload/film.jpg
Failed to move the file...

Ligger problemet så i at mappen "upload" har følgende permission "drwxr-s---" eller 740 og at jeg ikke er klar over hvordan jeg ændrer rettigheder på mit "Mitel Networks 6000" server software eller?
Avatar billede coderdk Praktikant
11. december 2006 - 14:10 #23
Ja, det er pga 740... Jeg ved ikke hvordan man ændrer rettigheder i det system - Men du har jo selv oprettet den folder - Du burde kunne sætte rettighederne... Jeg forstår ikke rigtig at du ikke kunne med FileZilla - Prøvede du at sætte krydser i alle checkboxe i stedet for at skrive 777?
Avatar billede theblueman Nybegynder
11. december 2006 - 14:12 #24
ja, jeg vil lige prøve at oprette mappen i Filezilla.
Avatar billede theblueman Nybegynder
11. december 2006 - 14:19 #25
kan fint oprette en mappe men kan ikke ændre rettighederne til andet end "drwxr-s---". Har også prøvet at give mig selv færre rettigheder...
Avatar billede theblueman Nybegynder
11. december 2006 - 15:26 #26
Nu fandt jeg ud af det....

Efter at have brugt Telnetklienten "Putty" fik jeg ændret rettighederne med chmod 777 "navn på mappen".

Det løste problemet: Får nu følgende resultat:

Kan GODT skrive til upload/
Upload: beachbar_020_cap.jpg
Type: image/jpeg
Size: 78.4609375 Kb
Temp file: /tmp/phpfWFaTF
Stored in: upload/beachbar_020_cap.jpg

Hvordan giver jeg dig point?

mvh
Lars
Avatar billede coderdk Praktikant
11. december 2006 - 16:10 #27
Cool :) Jeg smider lige et svar først, så burde du kunne acceptere ved at markere mit navn :)
Avatar billede theblueman Nybegynder
11. december 2006 - 17:13 #28
og mange tak for hjælpen! Kan altså ikke bruge "Filezilla" til at ændre rettighederne men jeg kan chekke hvilket rettigheder jeg har/havde. Løsningen var altså at bruge en Telnetklient som f.eks. Putty.

Ha' en fortsat god dag!

mvh
Lars
Avatar billede coderdk Praktikant
11. december 2006 - 21:40 #29
hehe ok :) underligt dog!
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