【问题标题】:Stream binary file from MySQL to download with PHP从 MySQL 流式传输二进制文件以使用 PHP 下载
【发布时间】:2010-12-06 11:47:40
【问题描述】:

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

可能吗?

编辑 - 嗯,刚刚想通了...发布在下面的答案中。

【问题讨论】:

    标签: php mysql binary download


    【解决方案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);
    

    【讨论】:

    • 感谢分享。有一天这可能有用:o)
    【解决方案2】:

    刚刚得到解决方案

    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;
    

    【讨论】:

    • 感谢您的解决方案。与 7 年前公认的解决方案相比,它有何改进?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 2023-04-02
    • 2016-12-24
    相关资源
    最近更新 更多