errore visualizzazione allegato jpg

natasha.miglia

Nuovo Utente
5 Apr 2010
4
0
0
Questo è il codice:

$fetchstructure = imap_fetchstructure($conn, $var);

$v1 = "0";
$i = "";
$ctrl = 0;
$ed = 0;
$mail_or_link = 0;

foreach($fetchstructure as $k => $val)
{
if (($ctrl=="") && ($k=="subtype"))
{
if ($val=="RELATED")
{
$i = ".2";
$ctrl=1;
}
if ($val=="MIXED")
{
$i = ".2";
$ctrl=1;
$ed=1;
echo "<b>Allegati:</b> ";
}
}
if ($k=="parts")
{
$items = $fetchstructure -> parts;
foreach($items as $k0 => $val0)
{
$v1 = $v1+1;
foreach($val0 as $k1 => $val1)
{
if (($k1=="disposition") && ($val1=="ATTACHMENT"))
{
$atch = $fetchstructure -> parts[$v1-1] -> dparameters[0] -> value;
echo "<a href=\"attach.php?id=$var&item=".$v1."\">".$atch."</a>";
}
}
}
}
}

Clikko sul link => codice altra paniana(attach.php):

if (isset($_GET['id']))
{
$var = $_GET['id'];
}
if (isset($_GET['item']))
{
$item = $_GET['item'];
}
include 'cnf.php';
echo base64_decode(imap_fetchbody($conn, $var, $item));
imap_close($conn);

ma invece dell'immagine mi restituisce i caratteri.. cosa sbaglio?
Grazie mille a tutti!!
 
echo base64_decode(imap_fetchbody($conn, $var, $item));
Ho dato una rapida occhiata al sorgente. Non ho usato le funzioni imap_*, ma secondo me dovresti salvare un file immagine jpg con il contenuto di base64_decode() e mostrare a video l'immagine con il tag 'img' usando come nome di file il file temporaneo che hai appena creato.
 
Grazie x le risposte.. ho fatto vari tentati con i suggerimenti avuti, ma ancora niente..

Risposta a programmatore:
avevo gia pensato una soluzione simile è ho fatto:

$var_ima = base64_decode(imap_fetchbody($conn, $var, $item));
echo "<p><img border=0 src='$var_ima'></p>";

mi era sembrata una soluzione plausibile.. o provato col salvataggio del file in formato jpeg(il suo formato), ma niente.. sto impazzendo, eppure il decode mi sembra esatto e gia dovrebbe visualizzarla col codice postato nell'apertura del tred.. aiutooooo!! :)
 
$var_ima = base64_decode(imap_fetchbody($conn, $var, $item));
echo "<p><img border=0 src='$var_ima'></p>";
Così avrebbe funzionanto solo se $var_ima era il nome del file e il file era già presente sul server.
Può essere che usi $item sbagliato (vedo parts[$v1-1] e nel link invece $v1 senza -1, magari hai un $id che non ha il giusto valore).
Questo genere di errori li risolvi visualizzando valori di vettori e/o variabili (print_r/printf).
Controlla se il file che hai salvato come jpg effettivamente è una jpg (banalmente la apri in locale o da browser dai il percorso completo al file).
 
Grazie mille programmatore.. avevi ragione, dovevo salvare il risultato del decode su file!!
posto il codice se dovesse essere utile a qualcun altro:

$jpg = base64_decode(imap_fetchbody($inbox, $var, $item));

$jpg_open = fopen("$var", "w");

fwrite($jpg_open, $jpg);

fclose($jpg_open);

imap_close($inbox);

header("location:$var")
 

Discussioni simili