1
我想從數據庫中獲取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);
確保輸出緩衝被禁用(並且之前沒有發送任何內容)。檢查錯誤。 –
@CharlotteDunois是的,它的工作,非常感謝你,但現在我的回答是在評論中,我不知道如何完成這個問題? –
自己回答問題,然後將其標記爲解決方案(綠色勾號)。 :) –