一尘不染

从MySQL流二进制文件以使用PHP下载

mysql

我有存储在MySQL表longblob字段中的Excel电子表格。我需要检索此数据,然后将其作为可下载文件流式传输给用户,最好不要先将其写入磁盘。

可能?

编辑-嗯,刚想出来…在下面的答案中发布。


阅读 296

收藏
2020-05-17

共1个答案

一尘不染

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);
2020-05-17