codice anziché img

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Allora ragazzi premetto che una conversazione simile la avevo precedentemente aperta ma poi non ci ho messo mano da tanto tempo...

cmq per visualizzare come vedere e inserire img in mysql tramite php ho copiato il codice da una guida online... tutto funziona perfettamente, nel database l'img esiste i msg di conferma di corretto invio ci sono.. insomma il codice non può avere problemi... se non fosse per il fatto che al posto della img che vorrei visualizzare vedo una serie di questi simboli:

GIF89a˜‘÷ƒ¹æææÅÅÅ™™™†‹‹Ýî´ÝvËèÅáùæï÷™ÌÌL¶ÖÅãæuºÒ!—µî÷÷ÞæçÅØÞ£¬©ßðö4³ÝžÖ¼ÞæåìèQÇè>¥Á±ÈÏ´ÝçÖåçÖç÷2¼ð”ÎàÌÕÔñüÿçöøŒ“”¾åOÆí“Î ¤Üˆ·Ä[·Öµµµ"«à¯Ýæ*Õß½æõßæî™™™ÏÛÜçæîÅî÷‹ÏãÆæï3ÌÿL...e continuano...

che può essere?:book:
 
Hai inviato gli header necessari? Se l'immagine è JPEG, prima di mostrarla, prima di qualunque output, devi scrivere:
PHP:
<?php
header('Content-type: image/jpeg');
// ...
?>
Per una GIF userai image/gif, per PNG invece image/png.
 
ti posto il codice (copiato)

questo è dove invio la pagina

Codice:
<?php 
// se è stato inviato il file...
if(isset($_POST['invia']))
{
	// se ci sono stati problemi nell'upload del file
	if(!isset($_FILES['file_inviato']) OR $_FILES['file_inviato']['error'] != UPLOAD_ERR_OK)
	mostra_form("errore nell'invio del file. Riprova");

	// connessione e selezione del database
	mysql_connect('localhost', 'root', '')
	or die('Connessione non riuscita: ' . mysql_error());

	if(!mysql_select_db('img'))
	die('Selezione database fallita!');

	// recupero alcune informazioni sul file inviato
	$nome_file_temporaneo = $_FILES['file_inviato']['tmp_name'];
	$nome_file_vero = $_FILES['file_inviato']['name'];
	$tipo_file = $_FILES['file_inviato']['type'];

	// leggo il contenuto del file
	$dati_file = file_get_contents($nome_file_temporaneo);

	// preparo il contenuto del file per la query
	$dati_file = addslashes($dati_file);

	// query per inserire il file nel DB
	$query = "INSERT INTO tabella_files SET
				nome_file = '$nome_file_vero', 
				tipo_file = '$tipo_file', 
				dati_file = '$dati_file'"; 

	mysql_query($query)
	OR die('Query non valida: ' . mysql_error());

	// mostro nuovamente il form ed un messaggio di successo
	mostra_form("Memorizzazione del file <b>$nome_file_vero</b> nel database eseguita correttamente.");
}
else
{
	mostra_form();
}

/**
* Mostra il form per l'upload del file 
* 
*/ 
function mostra_form($messaggio = '')
{
	?> 
	 
	<head> 
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
	<title>Carica file nel database</title> 
	</head> 
	 
	<p><?php echo $messaggio?> <br /> Seleziona un file da memorizzare nel database: <p></p> 
	<form name="form1" enctype="multipart/form-data" method="post" action=""> 
	<p> 
	<input type="file" name="file_inviato"> 
	<p></p> 
	<p> 
	<input type="submit" name="invia" value="Invia file"> 
	<p></p> 
	</form> 
	 
	 
	<?php 
	exit();
}
?>

questo è dove ho l'elenco e dove passo gli id:

Codice:
<?php 
// connessione e selezione del database
mysql_connect('localhost', 'root', '')
or die('Connessione non riuscita: ' . mysql_error());

if(!mysql_select_db('img'))
die('Selezione database fallita!');

// query per ottenere l'elenco dei files nel DB
$query = "SELECT * FROM tabella_files";

$risultato = mysql_query($query)
or die('Query non valida: ' . mysql_error());

// se ci sono files nel DB
if(mysql_numrows($risultato))
{
	// estrazione dei risultati e stampa dei links ai files
	while ($tmp = mysql_fetch_array($risultato))
	{
		echo "<p><a href=\"mostra.php?id=$tmp[id_file]\">$tmp[nome_file]</a></p>\n";
	}
}
else
{
	echo '<p>Nessun file presente nel database</p>';
}
?>

e questo è dove la vorrei visualizzare:

Codice:
<?php 
// connessione e selezione del database
mysql_connect('localhost', 'root', '')
or die('Connessione non riuscita: ' . mysql_error());

if(!mysql_select_db('img'))
die('Selezione database fallita!');

// query per recuperare il file
$query = 'SELECT * FROM tabella_files WHERE id_file = '.$_GET['id'];
$risultato = mysql_query($query) or die('Query non valida: ' . mysql_error());
$tmp = mysql_fetch_array($risultato);

// invio una intestazione contenente il tipo MIME
header('Content-Type: '.$tmp['tipo_file']);

// invio il contenuto del file
echo $tmp['dati_file'];
?>

all'interno della cartella upload_img le img ci sono-- ma quando apro la pagina mostra.php mi esce quel casino...per puro caso non è che dipenda che la mia versione di php è la 4 e non la 5?
 
non è che il codice per la visualizzazione è inserito in una pagina con un'inclusione? Che browser usi?
 
allora ho provato anche a trasmettere tutto su il server di altervista ma anche online mi da lo stesso identico errore(cmq la mia versione di php è la PHP/5.2.10 con apache 2.0.63; quindi escludo che sia un problema in local - ho provato a visualizzare con opera il quale mi restituisce un piccolo riquadro con scritto immagine in mozilla mi sembra che invece mi dava il nome dell'immagine (ora nn ricordo bene).

i file li ho separati e quindi non sono inclusi (elenco.php - mostra.php - upload.php)

var_dump mi dice che è una stringa
 
La versione del PHP non c'entra nulla dato che stiamo parlando di stringhe e non certo di chissà quali funzionalità.
PHP:
// invio una intestazione contenente il tipo MIME
header('Content-Type: '.$tmp['tipo_file']);

// invio il contenuto del file
echo "<img src=\"{$tmp['dati_file']}\" type=\"{$tmp['tipo_file']}\" />\n";
Prova un poco così?
Se no salvi $tmp['dati_file'] in un file temporaneo che visualizzi sempre con img e poi dopo gli dai un bel unlink() e lo cancelli. Ma rischi di ritrovarti l'hard disk pieno di file non cancellati se la gente dopo aver visto l'immagine chiude il browser e "spegne" lo script che non farà l'unlink sull'immagine creata.
 
niente o per meglio dire; l'img mi da una x in quanto probabilmente nn la trova all'internio della cartella - e dopo quella x mi da la solita serie di stringhe....

mi potete trasmettere i codici per catalogare e visualizzare img in database mysql che a voi funzionano (probabilmente faccio prima)?
 
Ultima modifica:

Discussioni simili