Newsgroup: it.comp.www.php
Titolo: Problema con l'upload di immagini

Ciao a tutti.
Ho scritto un script per l'upload di un'immagine. L'utente in pratica mette
la data, una descrizione con <INPUT type="file"> sceglie l'immagine da
inviare, dà Submit e carica l'immagine.
In locale questa cosa mi va alla grande, ma sul server non mi funziona.
Nel dettaglio:
-utilizzo getImageSize per avere le dimensioni dell'immagine e il tipo di
immagine (accetto solo Jpeg).
-utilizzo copy per l'upload
nello script c'è un'istruzione tipo
$size = @getImageSize($fotofile);
if (!($size[2]==2)) { manda un messaggio d'errore: il file non è in formato
Jpeg}
Quando provo a fare l'upload di un'immagine dalla pagina sul server mi dà
sempre l'errore "il file non è in formato Jpeg". Inizialmente pensavo che il
server che mi ospita non avesse la libreria GD, ma ho letto sul manuale che
la funzione getImageSize non usa questa libreria, e cmq, dopo un phpinfo()
sul server ho avuto conferma che la libreria è presente. Non so darmi una
spiegazione.
Mi aiutate?
Thanx
giaconet

 ha scritto nel messaggio
news:9vckgh$eje4u$1...@ID-71483.news.dfncis.de...

ma per sapere il size dell'immagine non c'è mica $nomecampofil_size ?
Alex


?????
Non ho capito bene, scusa.
La funzione che uso io (ti riporto dal manuale php) è getImageSize.
Restituisce un array. L'index 0 è la dimensione in pixel della larghezza
(width), l'indice 1 è la dimensione in pixel dell'altezza (height), l'indice
2 è il tipo di immagine (1=GIF, 2=JPEG, 3=PNG, 4=SWF, 5=PSD, 6=BMP).
L'indice 3 è una stringa fatta così "height=xxx width=xxx" (dove xxx sono
ovviamente le dimensioni) da inserire nel tag IMG.
Esempio:
$imgType = array (1=>"GIF", 2=>"JPEG, 3=>"PNG, ecc.);
$size = getImageSize("fotogruppo.jpg"); //fotogruppo.jpg è contenuta nella
root principale del server in questo caso
$width = $size[0];
$height = $size[1];
$type = $size[3];
$strIMG = $size[4];
echo "<P>L'immagine è $width x $height pixel, è di tipo
$imgType[$type]</P><IMG src=\"fotogruppo.jpg\" $strIMG>";
Inoltre in locale mi funzia tutto benissimo. Mentre sul server che mi ospita
ogni volta che provo a fare l'upload, mi carica la pagina che dice
"l'immagine non è in formato JPEG".
Bye
giaconet

> Non ho capito bene, scusa.
La funzione che usi probabilmente è più interessante, pero' quando prepari
un form per l'upload di un immagine al submit vengono create le seguenti
variabili (facciamo finta che il campo ti tipo file si chiami "img"):
$img = riferimento all'immagine caricata nella dir temporanea
$img_name = nome immagine
$img_size = bytes immagine
$img_type = tipo immagine
Alex


Azz... ma sai che non lo sapevo? Moolto interessante, vedo subito se cosě
funziona....ma scusa mi sorge spontanea una domanda: se l'utente nel campo
file non seleziona un'immagine che valore assume $img_type? E anche
un'altra: $img=riferimento all'immagine caricata nella dir temporanea cosa
significa esattamente?
Thanx
giaconet

 significa esattamente?
Quando fai l'upload di un file, al submit del form il file selezionato viene
messo in una cartella temporanea, esempio:
c:\winnt\temp (Windows) oppure /tmp (unix).
Quando poi con php gli dai il comando:
copy($img,"/home/utente/immagini/$img_name");
.. gli stai praticamente dicendo (per esempio) di copiare /tmp/immagine.jpg
in /home/utente/immagini/immagine.jpg
Ciao
Alex


Grazie. Ciao
giaconet

"Alessio" <(
alessi...@libero.it
)@NOSPAM.tld> ha scritto nel messaggio
news:JQIS7.7761$o9.3...@news1.tin.it...
[CUT]
Ho scoperto il problema, ma non la soluzione (è bastato togliere la
chiocciolina davanti alla funzione copy).
L'istruzione
copy ($file,"/images/$file_name"); //dove file è il nome del campo input
file nel form e images è una cartella con chmod 777
mi dà l'errore
Warning: open_basedir restriction in effect. File is in wrong directory in
(qui scrive il file php dove si è verificato l'errore)
A cosa può essere dovuto?
Thanx
giaconet

 A cosa può essere dovuto?
Cavoli, credo sia il Safe Mode...
Anche a me da quell'errore perchè ho il Safe Mode attivato sul server...
Alex