2009-10-13 8 views
4

J'ai des feuilles de calcul Excel stockées dans un champ longblob de table MySQL. J'ai besoin de récupérer ces données, puis les transmettre à l'utilisateur sous forme de fichier téléchargeable, de préférence sans l'écrire sur le disque.Fichier binaire Stream de MySQL à télécharger avec PHP

Possible?

Modifier - Eh, juste compris ... Publié dans la réponse ci-dessous.

Répondre

11
function getfile($blockid) 
{ 
    global $msa_db; 
    $sql = "select filename, filedata from blocks where blockid = '$blockid'"; 
    $query = mysql_query($sql, $msa_db); 
    $result['filename'] = mysql_result($query,0,0); 
    $result['filedata'] = mysql_result($query,0,1); 
    return $result; 

} 

function download($fileinfo) 
{ 
    $file = base64_decode($fileinfo['filedata']); 
    header("Cache-Control: no-cache private"); 
    header("Content-Description: File Transfer"); 
    header('Content-disposition: attachment; filename='.$fileinfo['filename']); 
    header("Content-Type: application/vnd.ms-excel"); 
    header("Content-Transfer-Encoding: binary"); 
    header('Content-Length: '. strlen($file)); 
    echo $file; 
    exit; 
} 

$fileinfo = getfile($blockid); 

download($fileinfo); 
+1

Merci pour le partage. Cela pourrait être utile un jour: o) –

+0

Je cherchais quelque chose dans ce sens. Merci mec. –

1

Nous venons de la solution

http://www.codeproject.com/Articles/831185/CREATE-DOWNLOAD-ZIP-FILE-USING-PHP

$data = base64_decode($data); 

    header("Cache-Control: no-cache private"); 
    header("Content-Description: File Transfer"); 
    header("Content-disposition: attachment; filename='".$identifier.".zip'");  
    header("Content-Type: application/octet-stream"); 
    header("Content-Transfer-Encoding: binary"); 
    header('Content-Length: '. strlen($data));  
    header("Pragma: no-cache"); 
    header("Expires: 0"); 

    ob_clean(); 
    flush(); 

    echo $data; 
+0

Merci pour votre aide. Comment cela s'améliore-t-il par rapport à la solution acceptée il y a 7 ans? – Ian