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

Posted

技术标签:

【中文标题】在浏览器中显示不在 web 目录中且不可链接的文件【英文标题】:Show files in browser that are not in web directory and not linkable 【发布时间】:2019-08-16 20:38:09 【问题描述】:

我们正在使用 Laravel v.5.8 并将我们的公共文件放在类似...的目录中

/www/public/pubfiles/myfile.php

我可以毫无问题地链接到这些。我们还有一个上传脚本,通过设计将文件放入...

/uploads/nonlinkablefile

然后将路径和文件名等存储在db中。当有人单击链接以检索这些文件时,脚本会获取该文件并将其作为下载返回。

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

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

由于该文件没有支持 Web 的路径,因此我找不到这样做的方法。

谢谢。

【问题讨论】:

【参考方案1】:

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

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

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

显然,存储文件的路径应该可以被网络服务器访问,但文件不需要位于publicDocumentRoot 目录下。

【讨论】:

以上是关于在浏览器中显示不在 web 目录中且不可链接的文件的主要内容,如果未能解决你的问题,请参考以下文章

签出时添加到分支 dev 的文件显示在另一个分支中且未合并 Visual Studio [重复]

绝对路径与相对路径问题

未包含在 JWT 中且未发送到 Web Api 的 IdentityServer4 用户声明

如何将通用链接重定向到应用商店而不在 Safari 浏览器上显示弹出窗口?

在web开发中使用了Bootstrap3框架但是Firefox无法显示Glyphicons字体图标,其他浏览器可是,应该如何设置

实现将递归遍历文件,并将文件路径存储到map中且可以进行不同形式的查询,增加,删除等操作