Problema nel Caricare file e spostarlo con la funzione move_uploaded_file

  • Creatore Discussione Creatore Discussione c02y
  • Data di inizio Data di inizio

c02y

Utente Attivo
30 Nov 2012
30
0
0
Buona sera a tutti.

Ho un problema con la funzione move_uploaded_file, almeno questo credo sia il problema :D

Devo creare uno script che una volta caricato un file, quest'ultimo deve essere salvato in una specifica cartella.

Il file viene caricato, ma non riesco ad ottenere il salvataggio dello stesso in una cartella da me scelta.

Inoltre una volta fatto ciò mi servirebbe ottenere il percorso del file in quella cartella, così che in seguito possa salvarlo in un database. Ma questa parte non l'ho ancora cominciata, perché ho problemi nello spostare il file.

Sto lavorando in locale, non so se può essere utile.

Posto il codice php

PHP:
<?php
		$_FILES["img"]["tmp_name"];
		
		//Se il caricamento non va a buon fine, stampami l'errore
			if ($_FILES["img"] ["error"] >0) 
			
				{
				echo" Errore nell'upload" . $_FILES["img"] ["error"]  ."<br>";
				}
			
			else
			
				{
				echo "Upload ok","<br>";
				
				echo "Il nome dl file caricato è" .$_FILES["img"] ["name"] ."<br>";
				
				echo" " .$_FILES["img"] ["tmp_name"];
				
				}
			
			$pathAndName = "C:\upload";
			
			move_uploaded_file($_FILES["img"]["tmp_name"],$pathAndName);

?>

Mi esce questo:

Upload ok
Il nome dl file caricato è0d980764a8b7564f28a70e5ec8d94b22.png
C:\xampp\tmp\phpFB9C.tmp
Warning: move_uploaded_file(): The second argument to copy() function cannot be a directory in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 30

Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\phpFB9C.tmp' to 'C:\upload' in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 30

la variabile pathandname l'ho presa da unos cript su internet, dovevo concatenare anche il nome del file, perciò si chiama così.
 
Ultima modifica di un moderatore:
Prova cambiando così:
PHP:
$pathAndName = "C:\upload\{$_FILES['img']['name']}";
move_uploaded_file($_FILES['img']['tmp_name'], $pathAndName);
E assicurati di avere i permessi per scrivere in C:\upload.

Come faccio a sapere se ho i permessi?

mi esce questo:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\Users\Gianni\public_html\PROGETTO\upload_file.php on line 28

La linea 28 è: $pathAndName = "C:\upload\{$_FILES['img']['name']}";
 
Ultima modifica:
Ops. Correggi così:
PHP:
$pathAndName = "C:\\upload\\{$_FILES['img']['name']}";

Grande funziona! :D

Curiosità: perché nella variabile oltre all'indirizzo nel quale dovrà essere spostato il file, va anche il file stesso?

Il primo passo è stato fatto :D C'è un modo per salvare il percorso di questo file in una variabile? Perché così facendo ogni volta che carico un file, vado a salvare l'indirizzo in un database.

Mi serve solo sapere come salvare l'indirizzo.
 
Ultima modifica:
ciao
alla seconda domanda: ma a che ti serve salvare l'indirizzo? lo cambi ad ogni file che carichi o è sempre lo stesso?
eventualmente da salvare (penso) è il nome del file.

poi salvarlo dove, in una tabella db mysql?
 
ciao
alla seconda domanda: ma a che ti serve salvare l'indirizzo? lo cambi ad ogni file che carichi o è sempre lo stesso?
eventualmente da salvare (penso) è il nome del file.

poi salvarlo dove, in una tabella db mysql?

Penso di aver capito. La variabile pathAndName contiene l'indirizzo del file.

Mi serve perché voglio inserire in un database mysql varie immagini. Al posto di caricare le immagini, mi è stato consigliato di caricare gli indirizzi(che sono sempre gli stessi, cambierebbe solo il nome del file).

In modo tale che tramite query posso visualizzare le immagini.
 
ciao
se l'indirizzo è sempre lo stesso puoi fare a meno di caricarlo, ti basterebbe caricare il nome dell'immagine.
comunque ti faccio uno schema uno schema collegandomi a quello che hai fatto per l'upload
PHP:
<?php
//........
$pathAndName = "C:\\upload\\{$_FILES['img']['name']}";
//move_uploaded_file($_FILES["img"]["tmp_name"],$pathAndName);//questa la elimini e la sostuiisci con le seguenti righe
if(move_uploaded_file($_FILES["img"]["tmp_name"],$pathAndName)){
	//ati di connessione
	$q=mysql_query("INSERT INTO tabella(immagine) SET($pathAndName)") or die "errore....";
}else{
	echo "errore nel caricamento";
}
//......
?>
poi dove ti serve con SELECT estai il nome e lo inserisci nel tag <img src="nome"......
(nome sarà una variabile php)
 
ciao
se l'indirizzo è sempre lo stesso puoi fare a meno di caricarlo, ti basterebbe caricare il nome dell'immagine.
comunque ti faccio uno schema uno schema collegandomi a quello che hai fatto per l'upload
PHP:
<?php
//........
$pathAndName = "C:\\upload\\{$_FILES['img']['name']}";
//move_uploaded_file($_FILES["img"]["tmp_name"],$pathAndName);//questa la elimini e la sostuiisci con le seguenti righe
if(move_uploaded_file($_FILES["img"]["tmp_name"],$pathAndName)){
	//ati di connessione
	$q=mysql_query("INSERT INTO tabella(immagine) SET($pathAndName)") or die "errore....";
}else{
	echo "errore nel caricamento";
}
//......
?>
poi dove ti serve con SELECT estai il nome e lo inserisci nel tag <img src="nome"......
(nome sarà una variabile php)

Grazie mille! Funziona :D

Però ora mi chiedo..quando voglio cancellare un'immagine dal database, come faccio a cancellarla anche dalla cartella?

Lo so sono un pò rompiscatole, ma ne approfitto perché mi va di imparare :D
 
la funzione dovrebbe essere unlink()
PHP:
 <?php
//........
unlink('$pathAndName');
//....
?>
 

Discussioni simili