PDA

Visualizza versione completa : [HTML] Problema con i file in HTML


Orlando
05-04-2006, 15.42.32
- Vi chiedo aiuto, mi sono ingineprato in questo problema.

- Perché quando utilizzo l'elemento <input> con "type=file" va tutto correttamente: appare la finestra per la scelta del file e una volta selezionato quello desiderato nella casellina di testo appare tutto l'indirizzo assoluto (per esempio: -> C:\WINDOWS\java\Packages\73TNVLNR.ZIP). Quando però invio il nome del file selezionato tramite il metodo POST, ad uno script php, succede che nella variabile inizializzata da questo array ($_POST['scelta']) trovo solo il nome del file "73TNVLNR.ZIP" ma non il suo percorso.

- Come posso fare per avere l'intero percorso nella variabile inizializzata dal metodo POST cosicché possa compiere operazioni sul file?

- Invece del percorso assoluto si può inizializzare la variabile con il percorso relativo, "tipo ../../73TNVLNR.ZIP"?

- Lo script è:
----------------
-- INDICE.PHP --

<table>
<form action="OperazioniFile.php" method="post">
<tr>
<td>Scegli il db sul quale vuoi fare il back-up</td>
</tr>
<td><b>Operazione</b></td>
<td><INPUT type="file" name="scelta"></td>
</tr>
<tr>
<td><INPUT type="submit" value="Vai avanti"></td>
</tr>
</form>
</table>

----------------
-- OPERAZIONIFILE.PHP --

<?php
$nome_file = $_POST['scelta'];
if(file_exists($nome_file))
{
echo "Nome file ->".$nome_file."<br>";
$f = @fopen("$nome_file", "r");
while(!feof($f))
{
$riga = fgets($f,4096);
echo "<b>".$riga."</b><br>";
}
}
else
echo "Il file ".$nome_file." non è stato trovato"
?>

----------------

- Riassumendo:
in "$nome_file" trovo "73TNVLNR.ZIP";
mentre vorrei trovare
"C:\WINDOWS\java\Packages\73TNVLNR.ZIP".

- Come si fa?

----------------

- Un'altra cosa: quanto detto sopra accade se utilizza l'attributo di default cioè

<form action="OperazioniFile.php" enctype="application/x-www-form-urlencoded" method="post">

se invece utilizzo l'attributo

<form action="OperazioniFile.php" enctype="multipart/form-data" method="post"> (oppure "text/plain")

che viene consigliato per l'utilizzo con l'attributo "file", quando visualizzo il contenuto della variabile, questa risulta vuota! Sapete perchè?

- Vi ringrazzio tutti in anticipo.:confused:

quipo.it
05-04-2006, 22.56.33
<table>
<form action="OperazioniFile.php" method="post" enctype="multipart/form-data">
<tr>
<td>Scegli il db sul quale vuoi fare il back-up</td>
</tr>
<td><b>Operazione</b></td>
<td><INPUT type="file" name="scelta"></td>
</tr>
<tr>
<td><INPUT type="submit" value="Vai avanti"></td>
</tr>
</form>
</table>



<?php
if (file_exists($_FILES['scelta']['tmp_name'])) {
echo "Nome file ->".$_FILES['scelta']['tmp_name']."<br>";
$f = @fopen($_FILES['scelta']['tmp_name'], "r");
while(!feof($f))
{
$riga = fgets($f,4096);
echo "<b>".$riga."</b><br>";
}
} else {
echo "Il file ".$_FILES['scelta']['tmp_name']." non è stato trovato";
}
?>



intanto è indispensabile mettere enctype="multipart/form-data" se no non fa l'upload. Poi il file viene caricato in una cartella temporanea, e se vuoi salvarlo in una cartella predefinita devi copiarlo:


$save_as = '/destination/path/new_filename.zip';
copy($_FILES['scelta']['tmp_name'], $save_as);


e comunque l'array su cui devi lavorare è $_FILES e non $_POST.

HTH

Orlando
06-04-2006, 18.22.22
- Grazie per la risposta. Provo e poi ti faccio sapere.