我想从数据库中获取jpg格式的图像二进制数据,并使用以下代码为其制作下载链接。
它在wamp服务器上工作,下载完成后打开并且文件不是。损坏,它显示文件正确存储在数据库中,但不能在真实服务器上工作并且下载链接已经完成但是下载完成时文件没有打开。
我尝试用于pdf文件它在服务器和wampserver上都有效。
在下面的代码中,$ row填写正确,我确定数据库值没有问题。
$ content是图像的二进制值。
服务器是否需要特定设置?
$sql = "SELECT * FROM files WHERE file_id= ? ";
$params = array((int)$_POST["btn_save_file"]);
$table = sqlsrv_query( $conn, $sql, $params);
$row = sqlsrv_fetch_array( $table, SQLSRV_FETCH_ASSOC);
$message=sqlsrv_errors();
$content =$row["file_data"];
$temp = tmpfile();
fwrite($temp,$content);
$name="img".rand(1,1000).".jpg";
$a=fstat ($temp);
header('Content-type: image/jpg');
header('Content-Length: '.$a["size"]);
header("Content-Disposition: attachment; filename=".$name);
echo $content;
fclose($temp);
答案 0 :(得分:1)
Charlotte Dunois在评论中发出的答案是我的解决方案(禁用输出缓冲) 我使用" ob_end_clean()"在制作下载链接之前,它有效。