为什么下载的图像损坏


why downloaded image is damaged?

我想从数据库中获得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()",它工作了。