Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123

    Warning: imagecreatefromgif()

    Ciao a tutti,
    ho un problema con il caricamento di immagini nel codice php che ho eseguito per lo svolgimento di un esercizio.

    Il Warning che ottengo è il seguente:

    Warning: imagecreatefromgif() [function.imagecreatefromgif]: 'C:\xampp\tmp\php73E8.tmp' is not a valid GIF file in C:\xampp\htdocs\check_image.php on line 48
    The file you uploaded was not a supported filetype.

    Il codice che interessa la linea 48 è:

    codice:
    switch($type) {
    case IMAGETYPE_GIF:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.gif';
    	break;
    case IMAGETYPE_JPEG:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.jpg';
    	break;
    case IMAGETYPE_PNG:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.png';
    	break;
    default:
    	die('The file you uploaded was not a supported filetype.');
    }
    Potrei anche postare tutto il codice, ma è un pò lungo.

  2. #2
    Banalmente, hai provato con un'altra immagine gif?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Originariamente inviato da mircov
    Banalmente, hai provato con un'altra immagine gif?
    Magari fosse quello il problema.
    Ho provato con centinaia di file diversi, e con ogni tipo di estensione...ma nulla da fare...

  4. #4
    Ho cercato con Google l'errore che ti restituisce la funzione e il primo risultato è questo:
    http://forums.codecharge.com/posts.p...word=mysql+4.1

    Sembra che l'autore del post ricevesse l'errore a causa del caricamento via php.


    Hai provato ad usare un'immagine non caricata via php?

    In ogni caso prova a cercare l'errore su Google. Molto spesso si risolve molto più velocemente perchè sicuramente qualcuno ci è passato prima di te...

    Altrimenti, vediamo che si può fare...
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Originariamente inviato da mircov
    Hai provato ad usare un'immagine non caricata via php?
    Praticamente lo scopo dell'esercizio era proprio quello di fare l'upload di immagini via php.
    A questo punto provo a postarti l'intero codice, così capisci megllio quel che intendo.
    Se vuoi darci un'occhiata ti ringrazio, altrimenti continuerò a cercare l'errore da solo senza problemi .
    1° file -->upload_image.html
    codice:
    <html>
    	<head>
    		<title>Upload your pic to our site!</title>
    		<style type="text/css">
    		<!--
    	td {vertical-align:top;}
    		-->
    		</style>
    	</head>
    	<body>
    		<form action="check_image.php" method="post" enctype="multipart/form-data">
    			<table>
    				<tr>
    					<td>Your Username</td>
    					<td><input type="text" name="username" /></td>
    				</tr>
    				<tr>
    					<td>Upload Image*</td>
    					<td><input type="file" name="uploadfile"></td>
    				</tr>
    				<tr>
    					<td colspan="2">* Acceptable image formats include: GIF, JPG/JPEG and PNG.</td>
    				</tr>
    				<tr>
    					<td>Image Caption
    </td>
    					<td><input type="text" name="caption" /></td>
    				</tr>
    				<tr>
    					<td colspan="2" style="tect-align: center"><input type="submit" name="submit" value="Upload" /></td>
    				</tr>
    			</table>
    		</form>
    	</body>
    </html>
    2° file --> check_image.php
    codice:
    <?php
    $db=mysql_connect('localhost','aaa','aaapass') or die ('Unable to connect. Check your connection parameteres.');
    mysql_select_db('moviesite',$db) or die (mysql_error($db));
    
    //scegliere il percorso in modo che corrisponda a quello della cartella images in uso
    $dir='C:/xampp/htdocs/images';
    
    //si assicura che il caricamento sia avvenuto correttamente
    if ($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK) {
    	switch($_FILES['uploadfile']['error']) {
    	case UPLOAD_ERR_INI_SIZE:
    		die('The uploaded file exceeds the upload_max_filesize directtive ' .'in php.ini.');
    		break;
    	case UPLOAD_ERR_FORM_SIZE:
    		die('The uploaded file exceeds the MAX_FILE_SIZE directive that ' . 'was specified in the HTML form.');
    		break;
    	case UPLOAD_ERR_PARTIAL:
    		die('The uploaded file was only partially uploaded.');
    		break;
    	case UPLOAD_ERR_NO_FILE:
    		die('No file was uploaded.');
    		break;
    	case UPLOAD_ERR_NO_TMP_DIR:
    		die('The server is missing a temporary folder.');
    		break;
    	case UPLOAD_ERR_CANT_WRITE:
    		die('The server failed to write the uploaded file to disk.');
    		break;
    	case UPLOAD_ERR_EXTENSION:
    		die('File upload stopped by extension.');
    		break;
    	}
    }
    
    //recupera le informazioni sull'immagine appena caricata
    $image_caption=$_POST['caption'];
    $image_username=$_POST['username'];
    $image_data=date('Y-m-d');
    list($width, $height, $type, $attr) = getimagesize($_FILES['uploadfile']['tmp_name']);
    
    //si assicura che il file caricato sia effettivamente un tipo di immagine supportato
    switch($type) {
    case IMAGETYPE_GIF:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.gif';
    	break;
    case IMAGETYPE_JPEG:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.jpg';
    	break;
    case IMAGETYPE_PNG:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.png';
    	break;
    default:
    	die('The file you uploaded was not a supported filetype.');
    }
    
    //inserisce nella tabella images le informazioni
    $query= 'INSERT INTO images (image_caption, image_username, image_date)
    		VALUES ("' .$image_caption. '", "' .$image_username. '", "' .$image_date. '")';
    $result=mysql_query($query, $db) or die(mysql_error($db));
    
    //recupera il valore image_id che MySQL ha generato automaticamente quando abbiamo inserito le informazioni
    //sull'immagine nella tabella il nuovo record
    $last_id=mysql_insert_id();
    
    //dato che id è univoco lo si può utilizzare anche come nome dell'immagine per assicurarsi che l'immagine non sovrascriva
    //altre immagini esistenti
    $imagename=$last_id .$ext;
    
    //aggiorna la tabella images col nome finale dell'immagine
    $query='UPDATE images
    		SET image_filename = "' .$imagename. '";
    		WHERE image_id = ' .$last_id;
    $result=mysql_query($query,$db) or die (mysql_error($db));
    
    //salva l'immagine nella sua destinazione finale
    switch($type) {
    case IMAGETYPE_GIF:
    	imagegif($image, $dir .'/'.$imagename);
    	break;
    case IMAGETYPE_JPEG:
    	imagejpeg($image, $dir .'/'.$imagename,100);
    	break;
    case IMAGETYPE_PNG:
    	imagepng($image, $dir .'/'.$imagename);
    	break;
    }
    imagedestroy($image);
    ?>
    <html>
    	<head>
    		<title>Here is your pic!</title>
    	</head>
    	<body>
    		<h1>So how does it feel to be famous?</h1>
    		
    
    Here is the picture you just uploaded to our servers:</p>
    			[img]images/<?php echo $imagename; ?>[/img]
    		<table>
    			<tr><td>Image Saved as: </td><td><?php echo $imagename ?></td></tr>
    			<tr><td>Image Type: </td><td><?php echo $ext ?></td></tr>
    			<tr><td>Height: </td><td><?php echo $height ?></td></tr>
    			<tr><td>Width: </td><td><?php echo $width ?></td></tr>
    			<tr><td>Upload Date: </td><td><?php echo $image_date ?></td></tr>
    		</table>
    	</body>
    </html>

  6. #6
    Purtroppo non so che dirti, ho appena provato lo script e a me funziona o.O
    Ti posto il codice (l'ho semplificato un po')

    codice:
    check_image.php
    
    <?php
    //$db=mysql_connect('localhost','aaa','aaapass') or die ('Unable to connect. Check your connection parameteres.');
    //mysql_select_db('moviesite',$db) or die (mysql_error($db));
    
    //scegliere il percorso in modo che corrisponda a quello della cartella images in uso
    $dir=$_SERVER['DOCUMENT_ROOT'].'/Tests/htmlforum';
    
    //si assicura che il caricamento sia avvenuto correttamente
    if ($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK) {
    	switch($_FILES['uploadfile']['error']) {
    	case UPLOAD_ERR_INI_SIZE:
    		die('The uploaded file exceeds the upload_max_filesize directtive ' .'in php.ini.');
    		break;
    	case UPLOAD_ERR_FORM_SIZE:
    		die('The uploaded file exceeds the MAX_FILE_SIZE directive that ' . 'was specified in the HTML form.');
    		break;
    	case UPLOAD_ERR_PARTIAL:
    		die('The uploaded file was only partially uploaded.');
    		break;
    	case UPLOAD_ERR_NO_FILE:
    		die('No file was uploaded.');
    		break;
    	case UPLOAD_ERR_NO_TMP_DIR:
    		die('The server is missing a temporary folder.');
    		break;
    	case UPLOAD_ERR_CANT_WRITE:
    		die('The server failed to write the uploaded file to disk.');
    		break;
    	case UPLOAD_ERR_EXTENSION:
    		die('File upload stopped by extension.');
    		break;
    	}
    }
    
    //recupera le informazioni sull'immagine appena caricata
    $image_caption=$_POST['caption'];
    $image_username=$_POST['username'];
    $image_data=date('Y-m-d');
    list($width, $height, $type, $attr) = getimagesize($_FILES['uploadfile']['tmp_name']);
    
    //si assicura che il file caricato sia effettivamente un tipo di immagine supportato
    switch($type) {
    case IMAGETYPE_GIF:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.gif';
    	break;
    case IMAGETYPE_JPEG:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.jpg';
    	break;
    case IMAGETYPE_PNG:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.png';
    	break;
    default:
    	die('The file you uploaded was not a supported filetype.');
    }
    
    //inserisce nella tabella images le informazioni
    //$query= 'INSERT INTO images (image_caption, image_username, image_date)
    //		VALUES ("' .$image_caption. '", "' .$image_username. '", "' .$image_date. '")';
    //$result=mysql_query($query, $db) or die(mysql_error($db));
    
    //recupera il valore image_id che MySQL ha generato automaticamente quando abbiamo inserito le informazioni
    //sull'immagine nella tabella il nuovo record
    //$last_id=mysql_insert_id();
    
    //dato che id è univoco lo si può utilizzare anche come nome dell'immagine per assicurarsi che l'immagine non sovrascriva
    //altre immagini esistenti
    $imagename=rand(0,100) .$ext;
    
    //aggiorna la tabella images col nome finale dell'immagine
    /*$query='UPDATE images
    		SET image_filename = "' .$imagename. '";
    		WHERE image_id = ' .$last_id;
    $result=mysql_query($query,$db) or die (mysql_error($db));*/
    
    //salva l'immagine nella sua destinazione finale
    switch($type) {
    case IMAGETYPE_GIF:
    	imagegif($image, $dir .'/'.$imagename);
    	break;
    case IMAGETYPE_JPEG:
    	imagejpeg($image, $dir .'/'.$imagename,100);
    	break;
    case IMAGETYPE_PNG:
    	imagepng($image, $dir .'/'.$imagename);
    	break;
    }
    imagedestroy($image);
    ?>
    <html>
    	<head>
    		<title>Here is your pic!</title>
    	</head>
    	<body>
    		<h1>So how does it feel to be famous?</h1>
    		
    
    Here is the picture you just uploaded to our servers:</p>
    			[img]<?php echo $imagename; ?>[/img]
    		<table>
    			<tr><td>Image Saved as: </td><td><?php echo $imagename ?></td></tr>
    			<tr><td>Image Type: </td><td><?php echo $ext ?></td></tr>
    			<tr><td>Height: </td><td><?php echo $height ?></td></tr>
    			<tr><td>Width: </td><td><?php echo $width ?></td></tr>
    			<tr><td>Upload Date: </td><td><?php echo $image_date ?></td></tr>
    		</table>
    	</body>
    </html>
    L'immagine che ho usato è questa: http://immagini.p2pforum.it/out.php/i117068_kent.gif

    Prova un po'...

    PS
    Il file con il form per l'upload non l'ho modificato
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Carissimo Mircov,
    finalmente ho trovato tutti gli errori, che ovviamente erano banalità.
    ERRORE 1 (ed il motivo per cui dava il warning):
    codice:
    //si assicura che il file caricato sia effettivamente un tipo di immagine supportato
    switch($type) {
    case IMAGETYPE_GIF:
    	$image=imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.gif';
    	break;
    case IMAGETYPE_JPEG:
    	$image=imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.jpg';
    	break;
    case IMAGETYPE_PNG:
    	$image=imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or die ('The file you uploaded was not a supported filetype.');
    	$ext= '.png';
    	break;
    default:
    	die('The file you uploaded was not a supported filetype.');
    }
    Qua l'errore era che anche quando si inseriva un format jpeg o png la funzione era sempre imagecreatefromgif. Infatti io ottenevo quel warning perchè provavo ad inserire un jpeg, ma nel codice in case IMAGETYPE_JPEG vi era la funzione per i gif.

    2° ERRORE(errore di dichiarazione variabile)
    codice:
    //recupera le informazioni sull'immagine appena caricata
    $image_caption=$_POST['caption'];
    $image_username=$_POST['username'];
    $image_date=date('Y-m-d');
    in precedenza vi era scritto $image_data, variabile che ovviamente lui riconosceva come non definita...

    3° ERRORE(errore banale di stampo SQL)
    codice:
    //aggiorna la tabella images col nome finale dell'immagine
    $query='UPDATE images
    		SET image_filename = "' .$imagename. '"
    		WHERE image_id = ' .$last_id;
    nel codice errato vi era un ";" anche alla fine della linea del SET


    GRAZIE MILLE MIRCOV, SENZA IL TUO AIUTO NON CE L'AVREI MAI FATTA.
    Infatti mi sono concentrato su alcune cose che prima consideravo fatte bene.
    Ora si riparte con lo studio di PHP, sperando che non mi creino più problemi gli esercizi

  8. #8
    Ah ah ah, mi viene da ridere perchè quegli errori li ho eliminati pensando dipendessero dal fatto che avevo modificato il codice...

    Meno male che ci sei riuscito da solo allora, altrimenti ci avremmo messo una vita!

    Complimenti

    In bocca al lupo per i tuoi esercizi, e se hai problemi... posta!

    Ciao
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.