- Home
- Categorie
- Coding e Sistemistica
- Coding
- problema con UPLOAD
-
problema con UPLOAD
Innanzitutto ciao a tutti
sono nuova del forum
Sto facendo uno scriptino per fare l'upload di file ma non funziona.
lo script è:<? $file_up=$_POST['file']; if ($file_up != "") { copy("$file_up", "files/$file_up") or die("Non è possibile copiare il file."); } else { die("Non è stato specificato alcun file."); } ?> <html> <body> <p align=center>Hai inviato <? echo "$file_up"; ?> correttamente.</p> </body> </html>
Warning: copy(files/....): failed to open stream: Invalid argument in c:\inetpub\wwwroot... on line 6 (cioè la riga che contiene copy)
il bello è che ero riuscita a farlo funzionare sul mio pc, poi però l'ho provato sul server e non fuzionava, così ho cominciato a smanettare come una pazza e probabilmente ho modificato anche la versione che funzionava in locale
qualcuno può darmi una dritta? grazie a tutti
-
Controlla che sia presente la directory files e sia sprotetta.
-
grazie innanzitutto per avermi risposto.
ho ricontrollato ma l'avevo già settata su 777.
Ho cambiato qualcosina nel form e ora sembra che non riesca a passare il parametro, eppure mi sembra tutto giusto...il form è:
<HTML> <BODY> <FORM ACTION="do_upload2.php" METHOD="POST"> <DIV ALIGN=CENTER> </DIV> <DIV ALIGN=CENTER> **immagine da caricare:** <INPUT TYPE="file" NAME="file"></P> </DIV> <DIV ALIGN=CENTER> <INPUT TYPE="submit" VALUE="invia"></P> </DIV> </FORM> </P> </BODY> </HTML>
mentre do_upload2.php è:
<? $file_up=$_POST['file']; if ($file_up != "") { copy("$file_up", "files/$file") or die("Non è possibile copiare il file."); } else { die("Non è stato specificato alcun file."); } ?> <html> <body> <p align=center>Hai inviato <? echo "$file_up"; ?> correttamente.</p> </body> </html>
e il problema ora è che salta all'else' e non carica il file, infatti di messaggi di errore ora non ne dà, ma mi restituisce il messaggio che ho impostato nel caso in cui non venga specificato alcun file
-
Ciao.
L'errore è nel fatto che php mette i dati dei file uploadati non in post, ma in $_FILE.
Ad esempio $_FILES['nomefile'] da la grandezza del file, $_FILES['nomefile']['name'] da il suo nome reale e così via.
Ps devi usare un enctype nel form altrimenti non passi nulla.
qualcosa tipo <form enctype="multipart/form-data">
-
grazie massy,
ho fatto come mi hai detto e ho inserito la parte che mancava, ma non funziona ancora :bho:
non so più come cambiarlo, ora è così:
<HTML> <BODY> <form id="form" name="form" enctype="multipart/form-data" method="post" action="do_upload2.php"> <DIV ALIGN=CENTER> </DIV> <DIV ALIGN=CENTER> **Immagine da caricare:** <INPUT TYPE="file" NAME="immagine"></P> </DIV> <DIV ALIGN=CENTER> <INPUT TYPE="submit" VALUE="invia"></P> </DIV> </FORM> </BODY> </HTML>
e do_upload2.php è così:
<? $file_up=$_POST['immagine']; if ($file_up != "") { copy("$file_up", "files/$immagine") or die("Non è possibile copiare il file."); } else { die("Non è stato specificato alcun file."); } ?> <html> <body> <p align=center>Hai inviato <? echo "$immagine"; ?> correttamente.</p> </body> </html>
-
Non hai fatto come ti ho detto
$file_up=$_POST['immagine']; non è esatto.
devi lavorare con $_FILES[]
-
è vero non l'avevo notato, adesso provo
grazie infinite