Newsgroup: it.comp.www.php
Titolo: php e download file

Ciao
tramite vari script in rete ho messo appunto un pezzettino di codice
che mi fa una sorta di download di un file dal database oracle.
Premessa: tabella TTM_ALLEGATI così composta:
[CODE]
 SID_FILE   NUMBER(11)                         NOT NULL,
  NOME_FILE  VARCHAR2(255 BYTE)                 DEFAULT NULL,
  TIPO_FILE  VARCHAR2(128 BYTE)                 DEFAULT NULL,
  DATI_FILE  CLOB
[/CODE]
..il mio codice ....
[CODE]
$sql = "SELECT NOME_FILE,DATI_FILE,TIPO_FILE FROM TTM_ALLEGATI WHERE
SID_FILE =?";
                $row = $conn->getRow($sql, array($id),
DB_FETCHMODE_ASSOC);
                $conn->commit();
                if($row)
                {
                        $obj = new TicketVO($row);
                        header('Cache-Control:');
                        header('Pragma:public');
                        header("Content-Type: application/octet-
stream");
                        header("Content-Disposition: attachment;
filename=" .
$row['NOME_FILE']);
                        if (@fopen($row['NOME_FILE'],"x+")) {
                                echo $row['DATI_FILE'];
                                @fwrite($file_php,$row['DATI_FILE']);
                                @fclose($file_php);
                        }else{
                                echo $row['DATI_FILE'];
                                $file_php=@fopen($row['NOME_FILE'],"r
+");
                                @fwrite($file_php,$row['DATI_FILE']);
                                @fclose($file_php);
                        }
                }
                }
[/CODE]
Praticamente recupero dal database il nome, il tipo e i dati del file
e tento una sorta di ricostruzione del file.
Premetto che prima di questo ho sviluppato l'upload del file :)
Finchè effettuo la sorta di download di un file txt funziona ma
quando
vado a downloadare un file tipo doc mi va in errore.
Riporto l'errore di Office Word:
Word experienced an error trying to open the file.
Try these suggestions:
_Check the file permissions for the document or drive
_Make sure there is sufficient free memoru and disk space.
_Open the file with text Recovery converter.
Cosa devo fare in merito????
Grazie

 
ti allego il codice che uso (legge un file dal disco, non ti ci vuole
molto ad adattarlo a un file dal db
<?
if(empty($appl['APPL'])){
header("Location: http://".$_SERVER['SERVER_NAME']);
exit;
}
$sql_fm = "SELECT * FROM ".$table['file']."file,
".$table['file']."cartelle WHERE
".$table['file']."cartelle.FG = ".$table['file']."file.fm_fg AND
".$table['file']."file.FM='".$GET['fm']."';";
$result_fm = $db->sql_query($sql_fm);
$row_fm = $db->sql_fetchrow($result_fm);
$cur_file = $row_fm['fg_dir']."/".$row_fm['fm_nome'];
if(is_file($cur_file)){
$path_parts = pathinfo($cur_file);
if(!empty($path_parts['extension'])){
$sql = "SELECT * FROM ".$table['data']."extension_ext WHERE
ed_exten='".$path_parts['extension']."';";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
if($row['ed_header']==""){
$row['ed_header']="application/octet-stream";
}
}else{
$row['ed_header']="application/octet-stream";
}
if(file_exists($cur_file)){
$len = filesize($cur_file);
header("Pragma: no-cache");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-disposition: attachment;
filename=".urlencode(basename($cur_file))."");
header("Content-Type: ".$row['ed_header']."");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
readfile($cur_file);
}
}else{
  echo "Error 9";
}
?>

 ?>
No iol prblema č che io ho il file spezzettato nelkla tabella.
Nel senso ho il nome com l'espensione, i dati e il tipo di file.
Con questi dati riesco a ricostruire un file????
-- 
-----------------------------------
http://www.photocri.altervista.org
http://www.photographers.it/free/cristinalamberti
http://cristinalamberti.spaces.live.com/
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ?>
