通过 PHP 访问不在 web 文件夹中的 jpg

Posted

技术标签:

【中文标题】通过 PHP 访问不在 web 文件夹中的 jpg【英文标题】:accessing a jpg which is not in the web folder through PHP 【发布时间】:2019-08-11 21:08:33 【问题描述】:

我最近发现了一个 youtube 视频,其中介绍了在网络浏览器中访问 PDF。这很有趣,因为我怀疑我可以在系统上的任何位置(给定权限)访问 PDF,并通过 php 将其传递给 Web 浏览器。

我不希望他成为安全讨论,所以请避免安全问题!

https://www.youtube.com/watch?v=z4a6QJSGL28

代码看起来像这样

$file="/home/kodi/Pictures/scans/test.pdf";
$filename="test.pdf";

header('Content-type: application/pdf');
header('Content-disposition: inline; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);

所以我测试了它,然后我尝试了这个

$file="/home/kodi/Pictures/scans/test.jpg";
$filename="test.jpg";

header('Content-type: application/jpg');
header('Content-disposition: inline; filename="'.$filename.'"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);

奇怪的是,这并没有显示在网络浏览器中,但几秒钟后,我用于下载 jpg 的首选应用程序打开了,并且出现了文件。它已下载而不是在浏览器中打开。

我一直在开发一个 LAN 应用程序,它可以通过 PAM 身份验证访问服务器上的用户文件夹,并且一直在使用 base64 编码,但是我觉得如果我可以减少 base64 图像 (30%) 的开销,转换和字面意思转换列表中的每个图像以显示指向它们的链接,系统加载速度会更快。这肯定是一个更好的方法,但每个人都说这种事情行不通!有证据表明它可以在我从用户文件夹中的 Web 服务器下载的文件中运行 ios

任何想法如何使它与 jpg 一起使用?

【问题讨论】:

【参考方案1】:

您的内容类型不正确,应该是 image/jpeg,而不是 application/jpg

【讨论】:

以上是关于通过 PHP 访问不在 web 文件夹中的 jpg的主要内容,如果未能解决你的问题,请参考以下文章

PHP文件包含

如何调用不在 html 目录中的脚本? [关闭]

如何在“另存为”对话框中强制使用正确的文件扩展名? (.jpg 而不是 .php)

基于 html、css、jquery 的拖放、调整大小、旋转应用程序:通过 php 将最终图像导出为 jpg

PHP下载文件

在浏览器中显示不在 web 目录中且不可链接的文件