2016-11-16 8 views
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); 
+0

出力バッファリングが無効になっていることを確認してください(前に何も送信されていません)。エラーをチェックしてください。 –

+0

@CharlotteDunoisはい、それはうまくいきました、ありがとうございましたが、私の答えがコメントになったので、この質問をどのように終了するのか分かりません。 –

+0

自分で質問に答え、それを解決策(緑色のダニ)としてマークします。 :) –

答えて

1

Charlotte Dunoisがコメントで送信した答えは、私の解決策(出力バッファリングを無効にする)です。
ダウンロードリンクを作成する前に「ob_end_clean()」を使用していました。

関連する問題