Visualizzare immagini caricate in un DB MySQL!! (da tutorial)

schizzechea

Nuovo Utente
6 Mar 2004
29
0
0
48
www.schizzechea.it
Salve a tutti, ho appena finito di testare il Tutorial presente sul sito al seguente indirizzo:
https://www.mrw.it/tutorial/php/tutorial605.htm

La cosa sembra interessante ma ho un problema e chiedo aiuto a coloro che hanno avuto risultati migliori.

L'inserimento dei dati nel database avviene correttamente, il problema sorge quando voglio visualizzare l'immagine memorizzata.

I dati che attualmente riesco a visualizzare, sono i dati grezzi (Binari) inseriti nel campo BLOB del DB MySQL e non l'immagine in quanto tale.

Ho cambiato il Content type come specificato anche nel tutorial non ottenedo alcun risultato....qualcuno sa come funziona???

Ho notato che nel campo TYPE che memorizzo nel DB per una immagine JPG mi inserisce "image/pjpeg", è normale??

NB: So che è possibile memorizzare il percorso delle immagini nel db, è la tecnica che ho utilizzato sempre, adesso sarei interessato a ricavare il meglio da questa tecnica.... ;-)

Grazie!!!!

PS Questo è il codice della mia pagina show.php c'è qualche errore???

Codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" Content-type: "image/jpeg; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>

<body>
<?
if (isset($_GET['id']))
{
  $id = @intval($_GET['id']);
  @include 'config.php';
  $sql = "SELECT id,type,immagine FROM immagini WHERE id='$id'";
  $result = @mysql_query($sql) or die(mysql_error ());
  $row = @mysql_fetch_array($result);
  $id_img = $row['id'];
  $type = $row['type'];
  $img = $row['immagine'];
  if (!$id_img)
  {
    echo "Id sconosciuto";
  }else{
    @header ("Content-type: ".$type);
    echo $img;
  }
}else{
  echo "Impossibile soddisfare la richiesta.";
}
?>

</body>
</html>
 
ciao io uso questo tipo di script:

PHP:
<img src="downloadfile.php?id=<?php echo $row["id"]; ?>"  border="no">

dove l'id equivale all' id dell'immagine che ho salvato e che nella stessa pagina ho richiamato

mentre il file di download:

PHP:
<?php
$blobId=$_GET['id'];
if(!is_numeric($blobId)) 
die("blobId invalido");
include("conn.php");// conn.php contiene i dati per la connessione col database 
$dbQuery = "SELECT id,img,file FROM news WHERE id=$blobId";
$result = mysql_query($dbQuery) or die("File non presenti nel Database"); 
if(mysql_num_rows($result) == 1) 
{ 
$fileType = @mysql_result($result, 0, "file"); 

$fileContent = @mysql_result($result, 0, "img");

header("Content-type: $fileType");  
	   echo $fileContent;
	    } else { echo "non esiste Record."; }
		?>

in questo modo visualizzo l'immagine senza problemi

guarda se ti può interessare

ciao ciao :byebye: :byebye:
 
Grazie per la risposta ma non ci siamo capiti....

il mio problema è che visualizzo i dati grezzi e non l'immagine

Dati grezzi significa qualcosa del genere:
Codice:
õ>}Ëãóv_Ç®î]–î]¯=í×s:“¯m0ÑboÍ6ÅŒªSŒ½*ž :
cé½O…õ½^_¦N&_O H"@ê|›;år´WÍèMåÜz×&¬µ¦ºëËJr#'No?ïøþ“§†üåÑÁêØŒ¨‹`ÓŸDξÞ}‹”^¤xžÿ¯ËõÆ»aÙçHŲëO¤¬öSçVëHŸ>ÛM:¸×çÚ*"@‰$D€`äù]-*æé¹
ËéMêoåÕ7bç>ó]W1Ò‹•\ÊSUy®r=^O_šîz+Òòú Ž-‡³òª³×Ómó'?]ŒmÖ=ÚÚ2ìÚw>‘ã[>Ï/Ùç—ÝvyyÌ< n±8ng.ŽóÒO7|ÙÈcÙvë|Z2¨µ2zþÖÜ^õ™ã~£×æm:PH D€$:Øs>W°

Che sarebbero i dati memorizzati nel campo BLOB del db MySQL.

Con il tuo codice ho esattamente lo stesso problema in quanto non è la visualizzazione in quanto Quety SQL il mio problema ma il risultato della query che non è quello previsto!!!

Credo che il problema sia cn Content Type ma non ho capito come risolverlo.....
Grazie
 
perch?

io le inserisco senza problemi
PHP:
$immagine = $_FILES['immagine']['tmp_name']; 
$immagine_name1 = $_FILES['immagine']['name'];
$immagine_size1 = $_FILES['immagine']['size']; 
$immagine_type1 = $_FILES['immagine']['type'];

$fileHandle1 = fopen($immagine, "r"); 
$fileContent1 = fread($fileHandle1, $immagine_size1); 
$fileContent1 = addslashes($fileContent1);
 
La tabella tramite codice:

Codice:
$sql = 'CREATE TABLE `immagini` ('
. ' `id` int(11) NOT NULL auto_increment,'
. ' `nome` varchar(50) NOT NULL default "",'
. ' `size` varchar(25) NOT NULL default "",'
. ' `type` varchar(25) NOT NULL default "",'
. ' `immagine` blob NOT NULL,'
. ' PRIMARY KEY (`id`)'
. ' )';

e il database manulamente con il software che uso sempre
DB Tools Manager Professional.

Ho provato anche a fare tutto con il DB manager che manualemnte.....niente!!!
 
PHP:
CREATE TABLE `prodotti` (
  `id` int(11) NOT NULL auto_increment,
  `testo` longtext NOT NULL,
  `img` blob NOT NULL,
  `file` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`id`)
)
 
...ho capito ma il fatto che nessuno faccia così non significa che il problema non debba essere risolto, se PHP e MYSQL da questa possibilità perchè precludersi la possibilità di farlo anche se nessuno lo fa???

Grazie lo stesso!
 
codice del form

HTML:
<form action="inserimento.php" method="post" enctype="multipart/form-data">
	<p><br>
	  <span class="style1">inserimento prodotti</span></p>
      <p><span class="style1">descrizione</span><br>
        <textarea cols="40" rows="4" name="desc"></textarea>
      </p>
      <p><input type="file" name="immagine"></p>
	  <input name="invia" type="submit" value="SALVA">
	  </form>

codice ricezione e inserimento
PHP:
$desc=$_POST['desc'];

$immagine = $_FILES['immagine']['tmp_name']; 
$immagine_name1 = $_FILES['immagine']['name'];
$immagine_size1 = $_FILES['immagine']['size']; 
$immagine_type1 = $_FILES['immagine']['type'];

$fileHandle1 = fopen($immagine, "r"); 
$fileContent1 = fread($fileHandle1, $immagine_size1); 
$fileContent1 = addslashes($fileContent1);

include("conn.php");
$query="INSERT INTO prodotti VALUES (0,'$desc','$fileContent1','$immagine_type1')";
mysql_query($query) or die ("impossibile aggiungere i file nel database");

codice di richiamo

PHP:
	    <?php
include("conn.php");
$query="SELECT id,img,testo,file FROM prodotti ";
$result=mysql_query($query) or die ("no file");
while($row=mysql_fetch_array($result))
{
 ?> 
     <br><p> <img src="downloadfile1.php?id=<?php echo $row["id"]; ?>" width="94" height="147" border="no"></p>
	  <p>
	  <form method="post" action="modifica.php?id=<?php echo $row["id"]; ?>">
	    <textarea cols="30" rows="3" name="desc"><?php echo $row["testo"]; ?></textarea><br>
     <input type="submit" value="modifica testo"></p>
	  </form>
	  <form method="post" action="cancella.php?id=<?php echo $row["id"]; ?>"><input type="submit" value="cancella"></form>
	  <form action="modifica1.php?id=<?php echo $row["id"]; ?>" method="post" enctype="multipart/form-data">
	      <p><input type="file" name="immagine"></p>
	  <input name="invia" type="submit" value="modifica immagine">
	  </form>
	  <p>-------------------------------------------------------------------------------</p>
        
        <?php
}?>

io con questo codice non ho mai avuto problema
 
Si, online l'esempio funziona anche se credo debba essere gestita la dimensione massima e/o minima dell'immagine in upload perchè come vedi dal penultimo esempio online l'immagine non viene vsualizzata....

Comunque ho scricato il tuo codice, lo verifico e ti faccio sapere...

Grazie 10000!!!!
:byebye: :byebye:
 
dimensione immagini

scusami, come si possono gestire le dimensioni con javascript o con html? potresti farmi un esempio?
grazie
 
ecco il link dove troverai l'esempio online e i file da scaricare il codice della tabella è al suo interno

http://www.mptechnology.it/prova/index.php

fammi sapere se va bene

:hammer: :hammer: :byebye: :byebye: :byebye:

Ciao Mptech, ho provato il tuo esempio e funziona bene, mi chiedevo se c'è la possibilità di caricare più di un'immagine alla volta.
Ho "duplicato" i campi nella tabella e ho provato a modificare il file inserimento.php con scarsi risultati :hammer:

Se puoi darmi qualche indicazione te ne sarei grato :)

Alla prossima :byebye: :byebye:
 
vorrei visualizzare le immagini nel mio database msql

Salve

Sono un nuovo utente,
Vorrei chiedervi un aiuto
Non riesco a visualizzare tutte le immagini che ho caricato nel database.
Il codice che ho inserito mi visualizza solo una delle immagini
Io invece le vorrei visualizzzare tutte.
ecco il codice:

@require 'config.php';
while ($result21 = mysql_fetch_array($query21))

{
header ("content-type: image/jpeg");
$immagine = $result21["immagine"];
echo "$immagine/n";
}

Dove ho sbagliato ?
 

Discussioni simili