Newsgroup: it.comp.www.php
Titolo: [HELP] Come dedurre il nome dell'immagine uplodata?

Allora ho creato un semplicissimo e banale script per uplodare files (o 
meglio l'ho adattato alle mie esigenze dopo averlo trovato in rete ^_^).
Innanzitutto ho una pagina html dove ho il seguente form:
 <FORM method="POST" action="upload.php" enctype="multipart/form-data">
<INPUT type="file" name="miofile">
<INPUT type="submit" value="Upload">
</FORM>
Poi ho creato la pagina upload.php
<?
$cartella='upload/';
$percorso=$_FILES['miofile']['tmp_name'];
// ESEGUO L'UPLOAD CONTROLLANDO L'ESITO
if (@move_uploaded_file($_FILES['miofile']['tmp_name'], 
realpath($cartella)."/".$_FILES['miofile']['name']))
{
print "Upload eseguito con successo";
}
else
{
print "Si sono verificati dei problemi durante l'Upload";
}
?>
Funziona, ovviamente i files che carico vanno a finire nella cartella upload 
come indicato.
E fin qui tutto bene, ora vorrei aggiungere la possibilità di scrivere in un 
campo di una tabella
di un database mysql il percorso del file quindi vorrei che se ad esempio 
caricassi nella cartella upload un file che si chiama immagine.jpg
nel database si scriva   upload/immagine.jpg
Come faccio a ricavare quel nome?
Per la cartella basta richiamare $cartella ma per il nome del file 
(immagine.jpg) come faccio?
Vi ringrazio per l'aiuto 

 Come faccio a ricavare quel nome?
ti sei gia' risposto da solo
-- 
Conoscere le sorelle degli amici e' uno dei
motivi per i quali conviene avere molti amici.

johnnystanchino wrote:

http://php.net/basename
-- 
www.iuz-lab.info

 Vi ringrazio per l'aiuto
http://php.net/basename
-- 
www.iuz-lab.info

johnnystanchino ha scritto:
[CUT]

Ti rispondo io Johnny, visto che uno sguardo a quello script ho avuto 
modo di darglielo anche io.
aggiungi queste righe:
$destinazione = realpath($cartella)."/".$_FILES['miofile']['name'];
printf("<strong>DESTINAZIONE:</strong>$destinazione <BR>");
vedrai che ti visualizzerà tutto il percorso, completo di nome ed 
estensione del file, che hai salvato.
in questo modo hai anche la variabile $destinazione che contiene il 
"link" che facilmente potrai salvare sul tuo Db.
Ti propongo però un altro quesito:
Come risolvi il fatto che se carichi un' immagine diversa ma con la 
stessa estensione e stesso nome, questa sostituisce il precedente? :)
Spero di esserti stato d'aiuto
Saluti

 estensione e stesso nome, questa sostituisce il precedente? :)
Ti ringrazio moltissimo ^_^
In effetti il secondo problema č un BEL problema, non ci avevo proprio
pensato... suggerimenti? ;-) 

 
Appena ci metto le mani , te lo posto quà,
Fai altrettanto.
Saluti

 Saluti
Ok io ci provo per quel poco che so
Se ci riesci prima tu fammi sapere,ciao e grazie ^_^ 

 Fai altrettanto.
Per stasera getto la spugna ci riprovo domani,
comunque mi è venuta un'idea quantomeno
a livello teorico, per verificare se c'è già l'immagine
ed evitare quindi di sovrascriverla si potrebbe fare in
questo modo,
la verifica va fatta prima di eseguire l'upload del file giusto?
Ok.... se nello script in cui devo fare l'upload, prima di scrivere
la parte dell'upload, faccio una query esattamente un select nel campo che 
contiene
le path di tutte le immagini e se ad esempio c'è già un campo 
immagini/nomeimmagine.jpg
allora scrivo un segnale che mi dice di tornare al form di inserimento 
dell'immagine e modificarne
il nome altrimenti (quindi se non c'è già un campo con quella path) fai 
l'upload e inserisci la
nuova path nella tabella.
Che ne dici? A livello teorico mi sembra corretto ora si tratta di metterlo 
in pratica, domani ci provo,
nel frattempo se dovesse venirti qualcosa di più brillante fammi sapere.
Ciao 

 questo modo,
[CUT]
L'idea che mi stava balenando era invece questa:
Salvando tutti i file in una stessa directory,
senza scomodare il Db pensavo di andare a ricercare direttamente
nella directory un file che avesse lo stesso nome di quello che si vuole
salvare.
Se lo si trova ti avverte e si blocca se no, lo uppa.
  questo però richiede un certo numero di condizioni, che sinceramente
non sono ancora riuscito a mettere in pratica con il risultato sperato.
Prossimamente ti e Vi faccio sapere
Saluti

 
Ah dimenticavo,
visto che conosco quel codice su cui stai lavorando, e che tu parli di 
salvataggio di immagini,
hai già provato a salvare anzichè un immagine, ad esempio un file di testo ?
se vuoi che l' utente possa salvare solo ciò che vuoi dovrai porre anche 
questa condizione ;)
Fortunatamente in questo caso ho risolto.
Byez

 realpath($cartella)."/".$_FILES['miofile']['name']))
Mmmmmm, che brutta cosa! Vorrei ricordare alcune cose che il manuale
del PHP secondo me non spiega bene o da' per scontate:
$_FILES['userfile']['name']
Il nome originario del file impostato dal client. Puo' essere qualunque
cosa, puo' mancare (null) e puo' essere anche un'accozzaglia di bytes
arbitraria.  Sicuro che vada tutto bene nel caso di "../../../qualcosa"
o altre cose patologiche?  E' richiesta sanificazione prima di schiaffarlo
nel file system del tuo computer (Unix? NT?). Io aggirerei il problema
mettendo questa stringa nel DB e usando la chiave primaria generata dal
DB come nome del file: cosi' ottieni gia' un nome univoco, non sporchi
il file system con della robaccia, non hai bisogno di sanificare nulla
e tutto diventa piu' semplice e piu' sicuro.
$_FILES['userfile']['type']
E' il tipo MIME del file impostato dal client e dice di che tipo e'
il file.  Ad esempio "text/plain" e' un testo puro, "image/jpeg" e'
una JPEG, ecc.  Questa info andrebbe salvata nel DB, perche' deve essere
restituita al client quando fara' il download.
$_FILES['userfile']['error']
Se qualcosa e' andato storto, qui c'e' il codice di errore. Quindi
bisognerebbe scrivere qualcosa come:
    if( $_FILES['userfile']['error'] != UPLOAD_ERR_OK )
        die("errore nell'upload, codice " + $_FILES['userfile']['error']);
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it