我想从数据库中获取具有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);
发布于 2016-11-16 11:19:51
夏洛特·邓诺瓦给出的答案是我的解决方案(禁用输出缓冲)。
在创建下载链接之前,我使用了"ob_end_clean()“,它起了作用。
https://stackoverflow.com/questions/40638491
复制相似问题