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

Show files in browser that are not in web directory and not linkable

我们正在使用 Laravel v.5.8 并将我们的 public 文件放在类似...

的目录中
/www/public/pubfiles/myfile.php

我可以 link 毫无问题地处理这些。我们还有一个上传脚本,通过设计将文件放在...

/uploads/nonlinkablefile

然后将路径和文件名等存储在数据库中。当有人单击 link 来检索这些文件时,脚本会获取文件并 returns 下载。

第二个选项中的文件以这种方式存储,因此无法link编辑或共享。我们能够检查用户在页面上或直接在文件上的权限,以查看他们是否应该能够下载。

我现在想知道的是,我们是否可以进行这些检查,然后以某种方式在浏览器的新选项卡中显示文件(大部分为 PDF),而不是强制下载。

由于该文件没有启用网络的路径,因此我找不到这样做的方法。

谢谢。

您可以尝试使用 file() 功能,而不是下载请求浏览器打开文件,即:

return response()->file('/uploads/nonlinkablefile.pdf');

您可以在 official documentation 中找到更多信息。

显然文件存放的路径应该是web服务器可以访问的,但是文件不需要在publicDocumentRoot目录下。