从云提供商处提供文件而不先下载

时间:2017-05-15 08:09:48

标签: php laravel angular laravel-5 google-drive-api

我正在使用在Laravel中开发的后端服务器创建一个在Angular2中开发的SPA。

Angular2应用播放存储在不同云提供商(Google云端硬盘,SMB服务器,Dropbox,OneDrive等)中的视频文件,但这些提供商由Laravel API处理。

这是应用程序架构:enter image description here

有没有办法提供存储在这些提供程序中的文件而不先在Laravel服务器中下载文件?

任何帮助都将不胜感激。

感谢。

修改

文件无法公开访问。身份验证在Laravel后端设置和工作。

2 个答案:

答案 0 :(得分:0)

我假设通过" download",您希望在用户看到第一个视频帧之前提取整个文件时避免延迟。我能想到的唯一方法是使用Laravel和Drive之间的标准http分块来下载下载,然后在Angular应用程序和Laravel之间的http会话中回显。 NB我还没有对此进行测试,但我相信Drive支持分块。

答案 1 :(得分:0)

一般情况下,一种代理是不可避免的。您可以将流从云管道传输到标准输出,例如Stream FTP download to output或类似的。

如果云支持预先分配的网址,例如s3 http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html您可以从网络服务器重定向中受益,例如nginx https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile/中的X-Accel-Redirect