Problema nel visualizzare l'img dal database mysql

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Ciao a tutti; ho un problema riguardante la visualizzazione di file binari:

Riesco ad inserire correttamente l'img nel database, ma quando vado a visualizzare l'img al posto di essa vedo una serie di numeri e lettere(penso che si tratti del codice esadecimale che vada a costruire l'img) premetto che tutto questo è in locale con server win e php 4.0; il database utilizzato è mysql.

questo è il codice tramite il quale trasferisco l'img:

Codice:
<?php
include 'con.inc.php'
?>
<form action="<?php  echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="file"  name="upload" />
<input type="text"  name="desc" maxlength="255" />
<input type="submit" value="upload"/>
</form>
<!--Se il file viene realmente trasmesso 
<?php if(!is_uploaded_file($_FILES['upload']['tmp_name'])){
exit("non hai trasmesso il file");}
 
$uploadfile=$_FILES['upload']['tmp_name'];
$uploadname=$_FILES['upload']['name'];
$uploadtype=$_FILES['upload']['type'];
$uploaddesc=$_POST['desc'];
$tempfile=fopen($uploadfile,'rb');
$filedata=fread($tempfile, filesize($uploadfile));
$filedata=addslashes($filedata);
$sql="INSERT INTO IMG SET
FILENAME='$uploadname',
MIMETYPE='$uploadtype',
DESCRIPTION='$uploaddesc',
FILEDATA='$filedata'";
$ok=@mysql_query($sql);
if(!$ok){
exit('errore nella trasmissione del file: ' .  mysql_error());
}
?>

e questo è il codice tramite il quale vorrei visualizzare il file(ho messo un id a mano per facilitarmi il compito):
Codice:
<?php
 
include 'con.inc.php'
 
$id=13;
$sql="SELECT FILENAME,MIMETYPE,FILEDATA FROM IMG WHERE ID='$id'";
$result=@mysql_query($sql);
if(!$result){exit('database error');}
$file=mysql_fetch_array($result);
if(!$file){exit('il file non &egrave stato caricato nel database');}
$filename=$file['FILENAME'];
$mimetype=$file['MIMETYPE'];
$filedata = $file['FILEDATA'];
header("content-disposition: attachment; filename=$filename");
header("content-type: $mimetype");
header("content-length:".strlen($filedata));
echo $filedata;
?>

grazie in anticipo a chi vorrà rispondere
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
I tuoi script erano pieni di errori... li ho corretti così. Il primo:
PHP:
<?php
if(isset($_POST['submit']))
{
	require('con.inc.php');
	$allowed = array('gif', 'png', 'jpg', 'jpeg');

	$file = isset($_FILES['file']) ? $_FILES['file'] : false;
	$desc = isset($_POST['desc']) ? trim($_POST['desc']) : '';
	
	if(!$file)
		die('Non hai caricato nessun file.');
	if($desc == '')
		die('Non hai inserito nessuna descrizione.');
	
	$ext = explode('.', $file['name']);
	$ext = $ext[count($ext) - 1];

	if(!in_array($ext, $allowed))
		die("Estensione non valida! Quelle ammesse sono: <b>". implode(', ', $allowed) ."</b>.";

	if(!is_uploaded_file($file['tmp_name']))
		die("Impossibile caricare il file!");

	$contents = file_get_contents($file['tmp_name']);
	$contents = base64_encode($contents);
	
	$size = filesize($file['tmp_name']);
	
	$sql = "INSERT INTO img (FILENAME,MIMETYPE,DESCRIPTION,FILEDATA,FILESIZE) VALUES ";
	$sql .= "('{$file['name']}','{$file['type']}','{$desc}','{$contents}','{$size}')";
	$query = mysql_query($sql) or die("Impossibile eseguire la query: <b>". mysql_error() ."</b>");

	echo "Immagine caricata correttamente!";
	unlink($file['tmp_name']);
}
?>

<form name="upload" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
	File: <input type="file" name="file" /> <br /> <br />
	Descrizione: <input type="text"  name="desc" maxlength="255" /> <br /> <br />
	<input type="submit" name="submit" value="Carica immagine" />
</form>
Il secondo:
PHP:
<?php
require('con.inc.php');
$id = 13;

$sql = "SELECT FILENAME,MIMETYPE,FILEDATA FROM IMG WHERE ID='{$id}'";
$result = mysql_query($sql) or die("Impossibile eseguire la query: <b>". mysql_error() ."</b>");

if(mysql_num_rows($result) == 0)
	die('Impossibile trovare il file nel database.');

$file = mysql_fetch_assoc($result);

header("Content-type: {$file['MIMETYPE']}");
header("Content-length: {$file['FILESIZE']}");

echo $filedata;
?>
Per fare in modo che funzionino devi aggiungere alla tabella un campo FILESIZE di tipo BIGINT(20). Fammi sapere! ;)
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Problema nel ciclare un json Javascript 0
A Problema nel passare la variabile PHP 0
M Problema inserimento parole con apostrofo nel db PHP 5
A Problema nel passaggio di una animazione da flash a animate Flash 9
fulviozecchin Problema Visualizzazione tabelle HTML nel Browser HTML e CSS 9
giuseppe_123 [WordPress] Problema inserimento widget nel footer WordPress 0
N Problema nel fissare gli oggetti alla pagina in Adobe Muse Mac e Software 5
G [PHP] Problema nel passaggio del valore mese PHP 8
L [WordPress] Problema Javascript nel log del browser WordPress 1
S Problema nel modificare un record PHP 3
gandalf1959 problema nel posizionamento di un div HTML e CSS 1
L problema nel richiamare gli id HTML e CSS 2
M Problema nel coding PHP 4
P Problema di Undefined variable nel codice PHP PHP 5
Emix Problema nel concatenare jquery ed ajax nella stessa pagina Javascript 15
C Problema: salvare indirizzo file in un database(mancanza delle backslash nel percorso) PHP 13
F Problema con selezione di un file nel database PHP 5
C Problema nel Caricare file e spostarlo con la funzione move_uploaded_file PHP 14
A galleria jquery: problema nel caricamento di una immagine da un'anteprima HTML e CSS 10
S [ACCESS] Problema nel creare le tabelle da codice. MS Access 4
M Problema con disposizioni immagini e testi nel sito HTML e CSS 0
C AJAX FORM MAIL - problema con gli a capo nel messaggio Javascript 0
asevenx problema inserimento database nel sito online MySQL 3
asevenx problema con l'inserimento di un record nel database (caratteri non consentiti) PHP 11
E problema link nel menù XML 0
C Problema con il doppio invio nel form con onsubmit HTML e CSS 9
R Problema nel $_POST di dati per ricerca su DB PHP 12
T Problema nel salvataggio dei dati dopo il form. PHP 7
S Problema di visualizzazione nel web PHP 6
R problema nel caricare i file sul server Web Server 1
G problema nel pubblicare un file di 10 minuti Flash 7
JellyBelly Problema con xsl con html nel db XML 2
G problema nel pubblicare in html da flash Flash 8
F Problema con scrittura dati nel DB Classic ASP 16
L problema nel ridimensionare un immagine... Classic ASP 2
cosov Problema con numeri nel form Classic ASP 2
lupin3m [help] problema nel controllare il filmato con i simboli Flash 7
I Problema SPAM nel forum Supporto Mr.Webmaster 1
giorgione_tg MySql semplice problema nel creare una tabella... Database 2
F Problema nel posizionare popup... Javascript 3
metalgemini Problema: non mi salva i dati nel db Classic ASP 11
S problema redirect e js nel mio sito Supporto Mr.Webmaster 0
F Problema pulsante cerca record su access Database 0
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1

Discussioni simili