PDA

View Full Version : [php] problemi per upload del file


IAmZak
17-09-2008, 19:39
ragazzi sono in questa situazione:
- un sito internet in php
- tutto funge sul webserver apache
- php 4
sto cercando di fare una form per l'upload di un file, ma non mi funziona! ho trovato questa, che nella pagina html mette

<form action="aggiungi_canzone_3.php" method="post" enctype="multipart/form-data">
<input type="file" name="upfile">
<input type="hidden" name="MAX_FILE_SIZE" value="10485760">
<input type="submit" value="Invia il file">
</form>


e poi c'è la pagina php che è:

// QUESTE RIGHE RENDONO LO SCRIPT COMPATIBILE CON LE VERSIONI
// DI PHP PRECEDENTI ALLA 4.1.0
if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
if(!isset($_SERVER)) $_SERVER = $HTTP_SERVER_VARS;

/********************* VARIABILI DA SETTARE ********************/
// Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
$upload_dir = $_SERVER["DOCUMENT_ROOT"] . "../mp3";

// Eventuale nuovo nome da dare al file uploadato
$new_name = "";

// Se $new_name è vuota, il nome sarà lo stesso del file uploadato
$file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];

if(trim($_FILES["upfile"]["name"]) == "") {

die("Non hai indicato il file da uploadare !");

}

if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {

@move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir/$file_name")
or die("Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");

} else {

die("Problemi nell'upload del file " . $_FILES["upfile"]["name"]);

}

echo "L'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente";




ma non mi funziona.... mi dice: "Problemi nell'upload del file "

aiuto.................

IAmZak
18-09-2008, 14:29
helppppppppppppp

Torav
18-09-2008, 19:16
scusa se ti sembra una domanda sciocca, ma sei sicuro che l'hosting ti permetta l'upload dei file?

IAmZak
18-09-2008, 19:23
scusa se ti sembra una domanda sciocca, ma sei sicuro che l'hosting ti permetta l'upload dei file?

ehm........ non ho hosting

ho scritto che uso apache come webserver. è tutto in locale sul mio pc

Torav
18-09-2008, 20:16
strana sta cosa, a occhio sembra giusto. magari comincia col togliere le @, almeno ti vedi tutti i warning e/o i problemi. Poi fatti stampare il nome del file temporaneo e guarda se esiste su disco

IAmZak
19-09-2008, 14:11
strana sta cosa, a occhio sembra giusto. magari comincia col togliere le @, almeno ti vedi tutti i warning e/o i problemi. Poi fatti stampare il nome del file temporaneo e guarda se esiste su disco

mi dice "
Warning: move_uploaded_file(C:/root../mp3/Snuff.mp3): failed to open stream: No such file or directory in C:\root\modifiche\aggiungi_canzone_3.php on line 26

Warning: move_uploaded_file(): Unable to move 'C:\WINDOWS\TEMP\php47.tmp' to 'C:/root../mp3/Snuff.mp3' in C:\root\modifiche\aggiungi_canzone_3.php on line 26
Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload."

però è strano, perchè non ho cartelle bloccate da diritti strani.... sono tutte leggibili e scrivibili tranquillamente...................

IAmZak
19-09-2008, 14:17
allora, ho risolto così:
<?

// QUESTE RIGHE RENDONO LO SCRIPT COMPATIBILE CON LE VERSIONI
// DI PHP PRECEDENTI ALLA 4.1.0
if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
if(!isset($_SERVER)) $_SERVER = $HTTP_SERVER_VARS;

/********************* VARIABILI DA SETTARE ********************/
// Directory dove salvare i files Uploadati ( chmod 777, percorso assoluto)
$upload_dir = $_SERVER["DOCUMENT_ROOT"] . "/mp3";

// Eventuale nuovo nome da dare al file uploadato
$new_name = "";

// Se $new_name è vuota, il nome sarà lo stesso del file uploadato
$file_name = ($new_name) ? $new_name : $_FILES["upfile"]["name"];

if(trim($_FILES["upfile"]["name"]) == "") {

die("Non hai indicato il file da uploadare !");

}

if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {

move_uploaded_file($_FILES["upfile"]["tmp_name"], "$upload_dir\$file_name")
or die("Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");

} else {

die("Problemi nell'upload del file " . $_FILES["upfile"]["name"]);

}

echo "L'upload del file " . $_FILES["upfile"]["name"] . " è avvenuto correttamente";

?>


solo che anziche salvarmi il file in c:\root\mp3 me lo salva in c:\root e il nome anziche essere Snuff.mp3 è mp3$file_name, senza estensione......

Torav
19-09-2008, 15:44
questo perchè \ ti fa l'escape di $. Ti conviene usare /, su windows puoi usare anche quello (almeno mi pare funzioni :p )

IAmZak
19-09-2008, 15:53
questo perchè \ ti fa l'escape di $. Ti conviene usare /, su windows puoi usare anche quello (almeno mi pare funzioni :p )

mamma miaaaaaa

ti ano!!!

:D

banryu79
19-09-2008, 15:57
ti ano!!!

:eekk:

Torav
19-09-2008, 16:07
mamma miaaaaaa

ti ano!!!

:D

:help: :p