Newsgroup: it.comp.www.php
Titolo: Controllare l'esistenza del file sull'HD del client per  uploader immagini

ciao,solo alle prime armi con il PHP e  devo fare un uploader di file
immagini.
nella parte HTML ho utilizzato un
<INPUT TYPE="file" NAME="image"...
che mi visualizza un textbox accompagnato da un bottone di browser.
mentre nella parte PHP faccio riferimento al file tramite
$_FILES['image']
 sono riuscito a controllare alcune informazioni del file, come
dimensione in pixel e in byte, l'estensione etc, ma non riesco a capire
come controllare che la 'stringa' inserita nella textbox
dell'input-file sia realmente un file immagine residente sull' HD del
client:
Ora, se utilizzo il fileselector che viene mostrato sul click del
bottone 'browser', non ci sono problemi, dato che la stringa che genera
è al 100% un file esistente su HD,
Invece, se scrivo nella textbox un filename a caso, ad esempio
"asdsadsad.png", che in realtà non esiste, giustamente sul POST mi da
"Warning: getimagesize(): Read error!"
(il getimagesize() lo uso per conoscere informazioni sull'immagine; nel
caso sopra, l'immagine non esiste, e quindi mi da errore)
ho visto che esiste file_exists(), ma va a guardare l'HD del server,
non del client :(
l'ideale sarebbe utilizzare javascript, ma non saprei come testare
l'esistenza dell'immagine caricata:
ho provato piazzando un'immagine di test che sul Onchange del textbox
del input file, cambia src prendendo il valore dal textbox stesso:
In IE fila tutto giusto: l'immagine viene cambiata anche se il src
porta un indirizzo non valido (la famosa crocettina rossa), e rileva
l'evento 'onError' (e da qui l'esistenza o meno del file immagine),
anzi, se utilizzo il fileselector, la path di src diventa qualcosa tipo
assoluto "C:\cartella\file.jpg" (da notare che fa riferimento all'HD
del client!) e il browser carica comunque l'immagine.
In Mozilla/Firefox, invece, l'immagine non viene cambiata, sia nel caso
di file realmente inesistente che nel caso in qui la path è di  tipo
assoluto "C:\cartella\file.jpg" (da file selector): in pratica vuole
una path relativo, per cui non posso prelevare un'immagine dall'HD
client  e visualizzarla, quindi addio discorso "Esistenza del file".
Si, insomma, come posso testare l'esistenza di un file immagine da
uploadare? (mi va bene sia prima, con JS che dopo con PHP).
Grazie 1000 per l'aiuto!

nulla, son riuscito: su google per caso ho visto che qualcuno ha
utilizzato la funzione getimagesize() con l'@' davanti: ora non mi
stampa più quel warning.
gia che ci sono:in generale cosa significa @ davanti alla chiamata di
funzione?

funzione?
Significa inibire la visualizzazione degli errori.
Ossia l'errore rimane ma non viene visualizzato.
Piuttosto che nasconderli, però, sarebbe meglio intercettarli.
Ciao
Marco 

 Piuttosto che nasconderli, però, sarebbe meglio intercettarli.
piuttosto che intercettarli sarebbe meglio gestirli..
[..]
-- 
www.iuz-lab.info

> piuttosto che intercettarli sarebbe meglio gestirli..
Sě, č quello che intendevo.
Ciao
Marco 

 caso sopra, l'immagine non esiste, e quindi mi da errore)
Perche` andare a complicarti la vita?
$_FILES['image'] e` un array. Controlla $_FILES['image']['size'] e vedi
se e` >0. Se non lo e`, allora il file non e` stato caricato, altrimenti
si`. Se lo e`, controlla ['type'] e vedi il MIME Type per controllare se
e` un'immagine. Solo a questo punto inizi a prendere informazioni con
getimagesize()
Bye.
-- 
Alessandro Pellizzari