代码之家  ›  专栏  ›  技术社区  ›  Ian

用PHP从MySQL中下载二进制文件

  •  5
  • Ian  · 技术社区  · 16 年前

    可能的

    编辑-嗯,刚想出来。。。贴在下面的答案。

    2 回复  |  直到 16 年前
        1
  •  13
  •   Ian    16 年前
    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);
    
        2
  •  1
  •   jessn    10 年前

    刚找到解决办法

    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;