我想从数据库中获得jpg格式的图像二进制数据,并使其与下面的代码下载链接。
它在wamp服务器上工作,当下载完成时,它被打开,文件没有损坏,它表明文件正确地存储在数据库中,但在真实服务器上不起作用,下载链接是建立的,但当下载完成时,文件不打开。
我尝试了pdf文件,它在服务器和wampserver上都工作。
在下面的代码$行是正确填写,我确信数据库值没有问题。
$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);
Charlotte dunnois在评论中给出的答案是我的解决方案(禁用输出缓冲)。
在制作下载链接之前,我使用了"ob_end_clean()",它工作了。