【发布时间】: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- 无法访问。