使用 Content-Disposition 显示图像:使用 PHP 从数据库内联

Displaying image with Content-Disposition: inline from database using PHP

我希望将我的图像的二进制内容嵌入到我的数据库中,然后通过 PHP 脚本 return 它们。

我已经成功将数据存入数据库,可以查询数据库了。我可以创建一个文件下载页面。

header('Content-Type: '.$img_filetype);
header('Content-Disposition: attachment; filename="'.$img_filename.'"');
echo($img_binary_content);

例如,在我的网站上:https://davidsmedberg.me/img/test-sqlite.php?id=1

但是,我想要的是内联显示图像,以便它可以作为 img 标记的 src 包含在其他地方的 HTML 文档中。就像我可以使用这个文件一样:https://www.davidsmedberg.me/img/thames.jpg

当我尝试像这样替换 Content-Disposition header 时:

header('Content-Type: '.$img_filetype);
header('Content-Disposition: inline');
echo($img_binary_content);

我得到一张格式错误的图像。例如,Firefox 会显示 The image cannot be displayed because it contains errors. 例如,在我的网站上:https://davidsmedberg.me/img/test-sqlite1.php?id=1

如果我没有明确设置 Content-Disposition header.

,也会发生同样的事情

谁能帮我弄清楚我做错了什么?

你应该从你的php脚本中删除以下html代码,这些额外的HTML标签出现在图像内容的头部,导致浏览器无法识别图像

<!DOCTYPE html>
<html lang="en">