Newsgroup: it.comp.www.php
Titolo: JPG da inviare al sito

Ho creato uno pannello di admin per una gallery in un sito. Si può
quindi scegliere un JPG dal proprio hardisk (tramite il pulsante
Sfoglia) e inviarlo. Il programmino legge il jpg, crea una miniatura e
un ingrandimento e "butta via" l'originale (che potrebbe essere
pesante).
Tutto bene sin qui...
Il problema è che alcuni file Jpg danno errore (non ho capito bene che
errore sia... sembra che non siano leggibili...) e il programma, se va
avanti, crea foto nere.
Ci sono dei JPG incompatibili? Vanno salvati in modo particolare?
Alcuni software di fotoritocco non sanno produrre dei jpg validi?
Come funziona questa storia?
Grazi a tutti
ciao
-- 
La rovina del mondo sarà l'indifferenza...
...ma chi se fregaaaa!!  :D

Come funziona questa storia?
Potrebbero essere JPEG non RGB o YCbCr, ma ad es. in quadricromia o
in Lab. O magari sono JPEG progressivi e la libreria che usi riesce
a gestire solo i baseline. Oppure potrebbero essere JFIF o avere un
marker Adobe o un profilo colore embedded non compatibile.
Senza avere uno di quei JPEG e/o sapere che errore da'... la scelta
e' un pochino parecchio ampia, ecco.
Leonardo
-- 
 What do you make, so fair and bright;
 What do you build with sails for flight;
 What do you weave with wool so white?

e' un pochino parecchio ampia, ecco.
Sai come vederlo?
L'errore è qui:
--------------------
if(@is_uploaded_file($_FILES["immagine"]["tmp_name"])) 
{
@move_uploaded_file($_FILES["immagine"]["tmp_name"],
"$upload_dir/$nome_foto") or die ("Impossibile spostare il file --
$upload_dir/$nome_foto --, controlla l'esistenza o i permessi della
directory<br>");
} else {
	print "Foto non inserita...";
}
---------------------
Mi restituisce:   Foto non inserita...
Quindi non prova neanche a toccarlo, quel jpg (mentre, a parità di
codice, altri jpg vanno a buon fine).
Poi partono tutti gli errori conseguenti al "non eistere la foto"
tipo:
Warning: getimagesize(percorso/img/img_news/20070523124432.jpg):
failed to open stream: No such file or directory in
percorso/crea_img.php on line 39
Non solo... mi sono accorto ora che il jpg che stavo inviando è di
oltre 3Mb e a monte del codice riportato ho il controllo sulla
dimensione che non deve superare i 1200000
 if ($sizefoto > 1200000) {...avvertimi e fermami...}


 
Verifica i limiti 
(
http://it.php.net/manual/it/features.file-upload.php
): "Si vedano i 
parametri file_uploads, upload_max_filesize, upload_tmp_dir, 
post_max_size e max_input_time  nel php.ini").
vedi cosa ti ritorna
$_FILES['userfile']['error']
(dove 'userfile' è il name del campo di tipo "file")
e confronta con
http://it.php.net/manual/it/features.file-upload.errors.php
probabilmente hai un 1 o un 2
-- 
doh!

probabilmente hai un 1 o un 2
Mi risponde  1
Come faccio il controllo?
Io ora agivo così: sono al mio secondo accesso al form percui
controllo le variabili mi sono passato, tra cui
$sizefoto = $_FILES['immagine']['size'];
if ($sizefoto > 1200000) 
{
  $err++; echo "File troppo grande"; /*blocco tutto*/
}
Nel mio php.ini c'è upload_max_filesize=2M
Pare che il controllo che ho scritto sopra funzioni solo con i file
che stanno tra il mio 1,2M e i 2M del php.ini.
Andando oltre i 2M il mio controllo va a quel paese e se faccio:
  print $_FILES['immagine']['size'];
ottengo zero (0).
A questo punto quando/come devo fare il controllo?
Grazie ancora...
Ciao


A questo punto quando/come devo fare il controllo?
Ho scritto così:
 if ($sizefoto > 1200000 OR $_FILES['immagine']['error']==1)
 {
   /*blocco tutto*/
 }
Può andare?
