1
jpg形式の画像のバイナリデータをデータベースから取得し、下のコードでダウンロードリンクを作っています。
Wampサーバーで動作し、ダウンロードが完了したときにファイルが破損せず、ファイルがデータベースに正しく格納されているが、実際のサーバーでは機能せず、ダウンロードリンクが作成されたことを示します。開かない。
私はpdfファイルのためにそれを試して、それはサーバーとwampserverの両方で動作します。
以下のコードでは$ rowが正しく埋められていて、データベース値に問題はないと確信しています。
$ contentはimageのバイナリ値です。
サーバーに特定の設定が必要ですか?ダウンロードした画像が壊れているのはなぜですか?
$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はい、それはうまくいきました、ありがとうございましたが、私の答えがコメントになったので、この質問をどのように終了するのか分かりません。 –
自分で質問に答え、それを解決策(緑色のダニ)としてマークします。 :) –