【问题标题】:Open original pdf file and not download it打开原始pdf文件而不是下载它
【发布时间】:2019-12-08 20:24:36
【问题描述】:

我有一个可以将文件上传到文件夹的 Laravel 应用程序。 该文件夹是 /media/folder_name 的符号链接,它是 Windows 共享的挂载点(通过 fstab 挂载)。 上传和下载作品。

下载操作返回文件的副本:

return response()->file($path_file);

我希望下载操作向我显示原始文件(保存在 windows 文件夹中,例如://192.168.1.2/share/folder/file.pdf)。 有可能吗?

【问题讨论】:

  • 所以您的意思是您不再想要实际下载(通过发出标头然后通过文件内容管道的服务器端代码触发),而只是 redirect i> 用户访问//192.168.1.2/share/folder/file.pdf 形式的 URL?好吧,这将要求您将该 URL 存储在某个地方开始 - 这当然不会发生在常规上传中。 (并且通过 HTTP 上传,这些天您不再获取完整的原始客户端路径 - 因此您必须以某种方式在 addition 中提供该信息到上传.)
  • 好的,存储服务器的ip地址没问题。 return redirect()->away('//192.168.1.2/folder/file.pdf') 不起作用...
  • “不起作用” 不能作为问题描述。那么,实际上会发生什么?错误?发生了重定向,但以下请求并没有达到您的预期? (是否有一个在该 IP 地址下运行的 Web 服务器可以响应任何此类 HTTP 请求?)
  • 好的。在 windows 机器 (192.168.1.2) 中没有 Web 服务器。如果在 Windows 机器中,使用 Firefox,我输入//192.168.1.2/folder/file.pdf,这样 Firefox 就会打开文件。如果我在我的网络服务器中输入与 Firefox 相同的地址(当然是在同一个局域网中),Firefox 将找不到该文件。共享具有“所有人”的读/写权限。最后,我的网络服务器可以将共享挂载到 /media/share 并在其中写入。谢谢
  • “我输入 //192.168.1.2/folder/file.pdf,所以 Firefox 打开文件”——不过,这实际上并不是通过 HTTP 访问的。 (可能会在地址栏中自动添加伪协议 file:/// 前缀,我猜?)您不能像使用普通 HTTP URL 那样重定向到这样的地址 - 浏览器将假定这是一个协议- 相对 URL,并且由于您 发生这种情况时通过 HTTP 访问的页面,然后它会自动添加该前缀,从而导致 http://192.168.1.2/folder/file.pdf - 无法访问。

标签: php laravel smb


【解决方案1】:

经过一些研究,出于安全原因,Firefox 和 Chrome 拒绝直接链接到本地​​资源。

因此,解决方案是为 firefox 安装 Local Filesystem Links 扩展。在 Laravel 中,返回一个包含资源链接的空白页面,例如:file:////192.168.1.2/folder/file.pdf

最后,当您点击 pdf 链接时,会使用默认程序(例如 Adob​​e Reader)打开原始资源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2012-08-18
    相关资源
    最近更新 更多