UPLOAD File in PhP

moscacieca

Nuovo Utente
27 Gen 2009
8
0
0
Carissimi amici, volevo chiedervi se avete presente perchè non mi funziona questo script per effettuare l'upload di un file.
Premetto che il file lo passo con la funzione

PHP:
$file=$HTTP_POST_FILES['file'];

e successivamente richiamo la funzione

PHP:
inserisciFile($file, $result1[id], $result2[id], $descr);

di seguito definita:

PHP:
function inserisciFile($file_,$id_prog,$id_cat,$descr) {
	
	if(empty($file_)) return false;
	if(empty($file_["name"]) ) return false;
	if(empty($file_["size"]) || $file_["tmp_name"]=="none")  return false;

if(!isset($_SERVER)) {
    $_SERVER = $HTTP_SERVER_VARS;
}

$new_name = "";
$file_name = "";

//*Percorso assoluto della cartella dove si desiderano salvare i files uploadati, la cartella deve avere i permessi 777*/

$upload_dir = $_SERVER["DOCUMENT_ROOT"] . "/upload/";

if ($new_name==""){
    $new_name=$file_["name"];
}else{
    $file_name=$new_name;
}

if(trim($file_["name"]) == "") {
    die("Devi indicare il file che desideri caricare");
}

echo $upload_dir . $new_name;
echo $file_['tmp_name'];

//parametri della funzione: move_uploaded_file($percorso_client, $cartella_remota_destinazione . $nome_file)

if(@is_uploaded_file($file_["tmp_name"])) {
    @move_uploaded_file($file["tmp_name"], $upload_dir . $new_name);
    chmod($upload_dir/$new_name, 0755)
    
    or die("Non riesco a spostare il file, controlla che siano stati assegnati i permessi 777 alla cartella di destinazione dei file uploadati");
} else {
die("C'è stato un problema con l'upload, prova di nuovo o contatta il webmaster " . $file_["name"]);
}
/*Informo l'utente che l'upload è stato eseguito correttamente*/
echo "L'upload del file " . $file_["name"] . " è stato eseguito con successo";

$file_name = $file_['name'];
	$file_tipo = $file_['type'];
	$file_size = $file_['size'];
	$file_tmp  = addslashes( $file_['tmp_name']);
	$file_path = "$upload_dir/$file_name";

$fp      = fopen($file_tmp, 'r');
	$content = fread($fp, filesize($file_tmp));
	$content = addslashes($content);
	fclose($fp);

	if(!get_magic_quotes_gpc()) $file_name = addslashes($file_name);


        $ris= mysql_query("INSERT 
                       INTO `file` (
                                    `id`,
                                    `name`,
                                    `path`,
                                    `file`,

etc etc...

Quando seleziono determinati file mi funziona, andando a storare le informazioni del file sul DB, ma senza spostare fisicamente il file nella cartella di destinazione.

Altre volte invece non mi memorizza neanche le info nel DB, stampando a video le seguenti righe:

Warning: chmod(): No such file or directory in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 715
Non riesco a spostare il file, controlla che siano stati assegnati i permessi 777 alla cartella di destinazione dei file uploadati.


A seguito del caricamento delle info del file, quando lo script funziona (in parte evidentemente), mi vengono visualizzati i seguenti messaggi:


Notice: Undefined offset: 0 in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\template.inc.php on line 513

Notice: Array to string conversion in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 109

Notice: Use of undefined constant id - assumed 'id' in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 134

Notice: Use of undefined constant id - assumed 'id' in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 134
c:/programmi/easyphp1-8/www/upload/vincpa.jpgC:/Programmi/EasyPHP1-8\tmp\php33B.tmp
Warning: Division by zero in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 716

L'upload del file vincpa.jpg è stato eseguito con successo

Warning: fopen(C:/Programmi/EasyPHP1-8\\tmp\\php33B.tmp): failed to open stream: No such file or directory in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 745

Warning: filesize(): Stat failed for C:/Programmi/EasyPHP1-8\\tmp\\php33B.tmp (errno=2 - No such file or directory) in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 746

Warning: fread(): supplied argument is not a valid stream resource in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 746

Warning: fclose(): supplied argument is not a valid stream resource in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 748

Notice: Array to string conversion in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 136

Warning: unlink(Array): No such file or directory in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 136


Credo ci sia qualche Warning di troppo e badando bene nel Warning successivo al messaggio di avvenuto Upload c'è qualche SLASH di troppo...
Cosa ne pensate?
Tenevo a sottolineare che quando lo script pseudofunzionante memorizza i dati nel DB, ciò che invece non avviene è lo spostamento fisico del file nella cartella di destinazione.

Grazie mille.
 
Ciao Eliox! Grazie per aver risposto.
Ho provato a seguire il tuo consiglio, ma niente! Sono due gli errori che suppongo continuino a sussistere:

1) nel momento in cui vado a selezionare un file ad esempio immagine con nome 13122008087.jpg, mi vengono visualizzate le seguenti notifiche:

Notice: Use of undefined constant id - assumed 'id' in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 134
c:/programmi/easyphp1-8/www/upload/13122008082.jpgC:/Programmi/EasyPHP1-8\tmp\php30A.tmp
Warning: chmod(): No such file or directory in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 716
Non riesco a spostare il file, controlla che siano stati assegnati i permessi 777 alla cartella di destinazione dei file uploadati

facendo evidentemente riferimento a:

PHP:
if(@is_uploaded_file($file_["tmp_name"])) {
    @move_uploaded_file($file["tmp_name"], $upload_dir . $new_name);
    chmod($upload_dir/$new_name, 0755)

2) mentre se seleziono un file che rinomino con un nome a mia scelta ad es. ioepa.jpg, allora mi esegue la memorizzazione delle informazioni del file sul DB, mi comunica che l'upload è stato eseguito con successo, dopidichè non mi effettua lo spostamento fisico del file comunicandomi queste notifiche e warning:

Notice: Array to string conversion in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 109

Notice: Use of undefined constant id - assumed 'id' in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 134

Notice: Use of undefined constant id - assumed 'id' in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 134
c:/programmi/easyphp1-8/www/upload/fede.jpgC:/Programmi/EasyPHP1-8\tmp\php30D.tmp
Warning: Division by zero in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 716

L'upload del file fede.jpg è stato eseguito con successo

Warning: fopen(C:/Programmi/EasyPHP1-8\\tmp\\php30D.tmp): failed to open stream: No such file or directory in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 745

Warning: filesize(): Stat failed for C:/Programmi/EasyPHP1-8\\tmp\\php30D.tmp (errno=2 - No such file or directory) in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 746

Warning: fread(): supplied argument is not a valid stream resource in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 746

Warning: fclose(): supplied argument is not a valid stream resource in c:\programmi\easyphp1-8\www\progetto.it\htdocs\include\functions.inc.php on line 748

Notice: Array to string conversion in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 136

Warning: unlink(Array): No such file or directory in c:\programmi\easyphp1-8\www\progetto.it\htdocs\add_doc.php on line 136

Ti prego di guardare anche la warning in neretto... tra SLASH e BACKSLASH...

Grazie mille!
 

Discussioni simili