Ladda upp filer med PHP

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Malmö
  • 2005-07-05 13:09

Hej

Jag är nybörjare på php och har kört fast lite. Just nu bygger jag en funktion där man ska ladda upp nyheter till en databas, det fungerar jättebra. Men så vill jag nu att det ska gå att koppla bilder till nyheterna. Därför vill jag ska använda mig av funktionen att ladda upp filer.

Jag får inte min kod att fungera utan får ett felmeddelande som säger att det inte går att kopiera filen som valts.

Enligt boken som jag har till min hjälp är koden för att kopiera filen ;

if ($_FILES[img1] !=="") {
copy($_FILES[img1][tmp_name],"/usr/local/apache2/htdocs/".$_FILES[img1][name]) or die ("Det gick inte att kopiera filen");
}
else {
die("Ingen fil har blivit vald");
}

/usr/local/apache2/htdocs/ ska ju vara root-mappen för dokument på web servern, men jag har absolut ingen koll vad som ska skrivas in där. Jag sitter på en Mac, har aktiverat php, mySQL och apache på min dator så jag kör lokalt. Är det någon som har en aning om vad det är för sökväg jag ska skriva in? Det är inte där jag sparar mina webfiler (Users/mitt_anv_namn/Sites/)?

får i alla fall felmeddelandet, vilken sökväg jag än skriver in:

Warning: copy(/usr/local/apache2/htdocs/prickar.gif): failed to open stream: No such file or directory in /Users/camilla/Sites/MySite/admin/laggtill_bild_idb.php on line 9
Det gick inte att kopiera bildfilen

Jag har försökt få tag på php.ini filen för att se om file_uploads = on, men hittar ej filen alls. När jag kollar phpinfo ska filen finnas i /etc, öppnade filen genom terminalen men den är tom.

Tacksam för all hjälp jag kan få! Detta driver mig vansinning...

  • Medlem
  • Uppsala
  • 2005-07-05 13:33

istället för att ha en fast sökväg så anta att filerna som laddas upp ska hamna i en undermapp som ditt uppladdnings php script ligger då räcker det med att du skriver följande:
copy($_FILES["img"]["tmp_name"],"nyhetsbilder/".$_FILES["img"]["name"]);
detta förutsätter att en undermapp finns som heter nyhetsbilder och att alla får skriva till den..
hoppas det hjälper mer än det rör till

Tja, sökvägen ska ju vara den mapp du vill lägga din bildfil i, lämpligtvis en mapp som ligger i http-rooten. Det enklaste sättet att ta reda på den fullständiga sökvägen för mappen är att dra den till terminalfönstret, där du automatiskt får upp sökvägen. I klientversionen av OS X är den inbyggda webbservern konfigurerad på att ha sin root i /Users/Anvandare/Sites/, det bör således bli något liknande för dig också, såvida du inte installerat en egen apache.

Tänk också på att ändra behörighten för den mapp du vill ladda upp bilder till, ställ den på "777" så kommer det att lira.

/M

  • Medlem
  • Göteborg
  • 2005-07-05 15:19

Kan det vara att www-användaren inte har behörighet att skriva i mappen.

Edit: Hoppsan, läste inte förra inlägget ända till slut.

Gör som ovanstående säger och prova att använda move_uploaded_file() istället för copy för att se om du får mer tur(och då slipper du skräpande tempfiler).
http://se.php.net/manual/sv/function.move-uploaded-file.php
Det verkar inte som om det lyckats att spara tempfilen.

....och om bilderna är stora måste man väl confa om både apache och php-configurationen att acceptera stora filer? Om jag kommer ihåg rätt.

1
Bevaka tråden