从MySQL下载二进制文件到PHP下载 [英] Stream binary file from MySQL to download with PHP
本文介绍了从MySQL下载二进制文件到PHP下载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
可能?
编辑 - 呃,只是想出来...发表在答案下面。
解决方案
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;
}
函数下载($ 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;
退出;
}
$ fileinfo = getfile($ blockid);
下载($ fileinfo);
I have Excel spreadsheets stored in a MySQL table longblob field. I need to retrieve this data and then stream it to the user as a downloadable file, preferably without writing it to disk first.
Possible?
Edit - Eh, just figured it out... Posted in answer below.
解决方案
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);
这篇关于从MySQL下载二进制文件到PHP下载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文