PDA

View Full Version : [Php] Creazione form upload


Xidius
16-12-2005, 17:37
salve ragazzi, ho creato questo script per l'upload dei file, consultando anche qualche guida sulla rete; come codice mi pare di stare apposto, solo che nn mi funziona...

primo file

<HTML>
<BODY>
<HR>
<FORM METHOD=POST ACTION="uploadit.php "ENCTYPE="multipart/form-data">
<TABLE WIDTH="70%" BORDER="8" CELLSPACING="0">
<TR><TD>
<B>Inserisci il nome del file da inviare </B><INPUT TYPE=FILE NAME="uploadfile"><BR><BR>
<INPUT TYPE="SUBMIT" VALUE="Invia le informazioni!">
<INPUT TYPE="RESET" VALUE="Cancella!">
</TR></TD>
</TABLE>
</FORM>
</BODY>
</HTML>


secondo file

<HTML>
<BODY>

<?php
echo "<PRE>";
echo "nome del file locale creato dopo l'invio: $uploadfile\n";
echo "nome originale del file remoto: $uploadfile_name\n";
echo "dimensioni del file in byte: $uploadfile_size\n";
echo "tipo di file: $uploadfile_type\n";
echo "</PRE>";
echo "<HR>";

if ( $uploadfile == "none" ) {
echo "Non è stato inviato alcun file<BR>";
echo "Ritorna al form per inviare il <A HREF=\"index.php\">file</A>";
exit;
}

if ($uploadfile_size < 3072000 ) {

if (copy($uploadfile,"/home/httpd/docs/$uploadfile_name"))
{
echo "Invio del file riuscito";

unlink($uploadfile);
} else {
echo "Invio del file fallito";
}
} else {
echo "Spiacente, il file da inviare non deve superare le dimensioni di 3 MB<BR>";
}
?>
Ritorna al form per inviare i <A HREF="index.phpl">file</A>
</BODY>
</HTML>



quando invio il form mi dice "Invio del file fallito"
Grazie per l'aiuto

DarkMic
16-12-2005, 19:43
Azzardo una risposta:

la funzione copy non riesce a copiare in quella cartella se non ha i permessi corretti.

controlla i permessi della cartella di destinazione.

Sempre a disposizione

rdefalco
16-12-2005, 20:47
Lo stai provando in locale con Apache+PHP su Windows, su Linux? In rete direttamente sul server? Hai provato a far mettere il file in un'altra cartella?

Xidius
16-12-2005, 23:07
ho risolto; invece della funzione copy ho usato la funzione move_uploaded_file();

ora avrei un altro quesito, guardate queste due semplici linee di codice:



$ISBN= $_GET['ISBN'];

mkdir("/Program Files/Apache Group/Apache2/htdocs/$ISBN", 0700);



mi faccio passare da un'altra pagina la variabile ISBN mettendola in $ISBN, ad esempio $ISBN= 10908989

vorrei creare una directory del tipo /Program Files/Apache Group/Apache2/htdocs/10908989

però il sistema mi da errore su $ISBN messo dentro mkdir; se ad esempio metto /Program Files/Apache Group/Apache2/htdocs/pippo
ho visto che il sistema mi crea effettivamente la directory pippo mentre con $ISBN nn la crea, come potrei fare? grazie dell'aiuto

DarkMic
16-12-2005, 23:24
prova così

mkdir("/Program Files/Apache Group/Apache2/htdocs/" . $ISBN , 0700);

Xidius
17-12-2005, 00:32
Forse ho capito il mio errore:

questo è il codice del form:
<form enctype="multipart/form-data" action="upload.php?isbn=$ISBN" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="3000000">
Invia questo file: <input name="userfile" type="file">
<input type="submit" value="Invia File">
</form>


e questo è il codice del file che prende i dati del form

$ISBN= $_GET['isbn'];


il problema penso che sia nel primo codice, dove l'html nn riconosce cosa sia $ISBN.. quindi nn so come fare....

rdefalco
17-12-2005, 09:55
No ha ragione darkmic devi mettere la stringa con la cartella "fissa" fra virgolette, poi chiudi le virgolette, metti un punto (concatenazione di stringhe) e dopo il punto metti $nomevariabile quindi
"/nomecartella/apache2/htdocs/ecc/" . $ISBN

capito?

Xidius
17-12-2005, 10:26
No ha ragione darkmic devi mettere la stringa con la cartella "fissa" fra virgolette, poi chiudi le virgolette, metti un punto (concatenazione di stringhe) e dopo il punto metti $nomevariabile quindi
"/nomecartella/apache2/htdocs/ecc/" . $ISBN

capito?

ho provato ma mi crea una cartella di nome $ISBN invece di crearmi una cartella col contenuto di questa variabile..
Ditemi se sbaglio ma tutto cio che ha a che fare col php lo rappresento dentro <?php e ?>
se metto una variabile php fuori dal suo contesto, giustamente l'HTML mi chiede: ma quale è il contenuto se io nn so nemmeno da dove viene quella variabile?
forse la soluzione è quella di mettere tutto il primo codice dentro il php e vedere cosa ne esce, ci provo e vi faccio sapere...

rdefalco
17-12-2005, 11:45
Scusami ma perché non provi all'interno del codice a mettere un

echo "Codice attuale: " . $ISBN;

per mostrare prima dell'operazione quale sia il contenuto della variabile?

Xidius
17-12-2005, 12:19
ho risolto, il problema infatti era quello che dicevo... ho messo tutto il primo codice dentro un echo" " con i relativi slesh e ora funziona, grazie comunque a tutti per l'aiuto