Avatar billede dd-man Nybegynder
08. maj 2003 - 09:05 Der er 16 kommentarer og
1 løsning

Upload et billede

Jeg har et problem...
Jeg kan ikke få dette til at uploade et billede (.jpg):

$sidsteID = mysql_insert_id();
$desti = "uploads/billede";
$desti.= $sidsteID.".jpg";
move_uploaded_file($file,$desti);

Jeg har lavet CHMOD (777) på mapperne: uploads og billede

Jeg har prøvet at ændre "move_uploaded_file" til "copy" men så kommer der tilmed også bare en fejl... (noget med at den ikke kan finde det billede som ligger i min mappe (klient-side)

Håber der lige er en der kan sætte lidt lys på tingene
Avatar billede sostack Nybegynder
08. maj 2003 - 10:06 #1
prøv lige med:
$desti = "uploads/billede/";

//sostack
Avatar billede tipsen Nybegynder
08. maj 2003 - 12:18 #2
sostack: Afhænger vel af om billederne skal placeres i en mappe med navn "billede" eller om de skal hedde billede01.jpg, billede02.jpg osv...
Avatar billede sostack Nybegynder
08. maj 2003 - 12:28 #3
tipsen: tjah, det kan du vel have ret i....!

//sostack
Avatar billede dd-man Nybegynder
08. maj 2003 - 22:03 #4
de skal hedde billede01, 02 osv. :)

men det løser jo ikke ligefrem problemet, hehe :D
Avatar billede sostack Nybegynder
09. maj 2003 - 09:28 #5
Er der "forbudte" tegn i filnavnet?
prøv at sætte anførselstegn omkring filnavnet.

//sostack
Avatar billede dd-man Nybegynder
09. maj 2003 - 09:47 #6
Jeg ved ikke hvad "forbudte" tegn er...

Men hvis jeg uploader (med dette i type=file):
C:\bob.JPG

Så bliver der skrevet i databasen:
uploads/billede34.jpg - altså det som den faktisk skal...

Men den bliver ikke smidt ind i mappen...

Jeg har også prøvet med anførselstegn omkring filnavnet... hjalp ikke
Avatar billede dd-man Nybegynder
09. maj 2003 - 09:49 #7
Dette er hele min linie, som den er lavet nu.

if ($file == "") {
print "intet billede";
} else {
mysql_query("INSERT INTO faktura_system (medlemsnr,att,firmainfo,saelger,dato,banknr,cvrnr,betalingsfrist,kundenr,kundenavn,kundepostby) VALUES ('$medlemsnummer','$att','$firmainfo','$saelger','$dato','$banknr','$cvrnr','$betalingsfrist','$kundenr','$kundenavn','$kundepostby')");

$sidsteID = mysql_insert_id();
$desti = "uploads/faktura"; // stien hvor filen skal gemmes
$desti.= $sidsteID.".jpg";
move_uploaded_file($file,$desti);

mysql_query("UPDATE faktura_system SET billede = '$desti' WHERE medlemsnr = '$medlemsnummer' AND id = '$sidsteID'");
}

- Hvis det kunne hjælpe noget...
Avatar billede sostack Nybegynder
09. maj 2003 - 11:31 #8
Hvor får du fat i værdien for $file ?
Det er nok fra en form, så prøv med $file = $_POST['file']; eller $file = $_GET['file'];, alt efter hvad du bruger i formen.

//sostack
Avatar billede sukos Juniormester
09. maj 2003 - 11:37 #9
$_FILES["formnavn"]
$HTTP_POST_FILES["formnavn"]  (for ver. af PHP som er mindre end 4.1.0)
Avatar billede dd-man Nybegynder
09. maj 2003 - 19:31 #10
Hej igen,

Når jeg bruger: $file = $_POST['file'];

ser det ud til at den laver præcis det samme.


Hvis jeg bruger _GET.. så virker det selvfølgelig ik :)

Hvis jeg bruger _FILES, så virker det ikke... har prøvet:
$file = $_FILES['formularnavn'];
$file = $_FILES["formularnavn"];
$file = $_FILES[formularnavn];

$file = $_POST['file'];
$file = $_POST["file"];
$file = $_POST[file];


Nogen idé til hvad der så er galt?
det var kun med $_POST['file'] at den fik fat i noget... og skrev i databasen, men den uploadede ikke filen... :/
Avatar billede tkandersen Nybegynder
12. maj 2003 - 03:29 #11
dd-man > $file = $_FILES["formularnavn"];

du mangler lidt:
$_FILES["formularnavn"]["name"]; // navnet på filen
$_FILES["formularnavn"]["tmp_name"];  // navnet på filen på webserveren inden du behandler det med move_uploaded_file()

så hvis du sætter
$file = $_FILES["formularnavn"]["tmp_name"];
burde det virke hvis din $desti er korrekt (den er relativ så jeg kan ikke se hvor mappen er i forhold til scriptet).

Håber det hjælper.
Avatar billede dd-man Nybegynder
12. maj 2003 - 08:40 #12
Hej tkandersen,

har du en email eller icq eller msn nr. jeg kan kontakte dig på... fordi det ser ikke ud til den laver noget endnu...

Eller hvis du har en anden løsning.

Denne:
$file = $_FILES["fakturaformular"]["tmp_name"];

Virker ikke. $file indeholder intet.

Jeg kan sige at formularen sender med "POST" og feltnavnet er "file" og formularen har navnet "fakturaformular".
Avatar billede tkandersen Nybegynder
12. maj 2003 - 09:34 #13
Hej dd-man

Så prøv at skifte 'fakturaformular' ud med 'file' siden uploadsidens felt hedder 'file':
$file = $_FILES["file"]["tmp_name"];

Men ellers er det således, at $_FILES["dit_html_felt_navn"] er et array med informationer om din fil.
Prøv i øvrigt at indsætte linien:
var_dump($_FILES);
et vilkårligt sted i din kode og se hvad den skriver til dig - så kan du på den måde se hvad der ellers ligger i $_FILES.
Avatar billede dd-man Nybegynder
12. maj 2003 - 10:08 #14
Hej igen,

Jeg har prøvet med var_dump($_FILES);

Jeg får følgende fejl nu. (jeg har en header: Location...  på siden - nok derfor)


array(0) { }
Warning: Cannot add header information - headers already sent by (output started at /web/www.domain.dk/www/medlem/opret_faktura.phtml:8) in /web/www.domain.dk/www/medlem/opret_faktura.phtml on line 38
Avatar billede tkandersen Nybegynder
12. maj 2003 - 10:22 #15
Ok - så flyt var_dump() længere ned på siden.

icq: 47938856
Avatar billede dd-man Nybegynder
12. maj 2003 - 10:53 #16
Hej igen,

tkandersen og jeg talte lige over ICQ, og kom frem til at jeg lavede en dumme-fejl, som var:

enctype="multipart/form-data"

i min formular der sendte skidtet. :)

kom lige med et svar tkandersen :)
Avatar billede tkandersen Nybegynder
12. maj 2003 - 10:54 #17
Hermed et svar :)
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