Laravel 内容上传到七牛问题什么好的解决方案?

我是新用户,以前来过。当前有个问题要问下。

做了个资源网站,面向国内用户,使用海外的VPS。直接上传文件原来速度还可以,现在大文件上传非常的吃力。于是考虑存储到七牛私密空间。

现在本地测试有以下两个:
1: 使用 @overtrue 的七牛依赖,目前可以获得下载链接加密网址,我想客户点击下载链接,直接跳出文件下载。
但是是用readstream 无法获取资源内容,直接填写 storage path 路径,显示401。是密钥不正确,这个可以理解,但是如果把获取的访问密钥添加path 后面,显示内容不存在。这个问题怎么解决方案

2.: 使用 storage 上传时候是否是中转模式。先到服务器再到七牛?如果这样,有要浪费更多时间和流量。是否可以直接使用storage 上传到 七牛然后返回内容, 还是要直接form 表单action 里填写七牛上传地址?

欢迎提示和讨论下。

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 4

第一,可以直接上传的七牛的空间,流程是服务器先生成一个upload tonke, 然后同文件一起发送给七牛。自己保存一个文件的name。
第二, 私有空间文件下载需要根据url计算一个token,不是直接加密钥。要让用户点击下载url上加个key,具体什么我忘记了,去看看文档

7年前 评论

@wujingke

感觉你没有回答我说的问题,可能我表述没有清楚。口令还是时间戳都是正确的。

生成的链接已经处理好了,可以直接点击下载文件。我的意思是不想把链接地址暴露出来,请求时生成链接,然后直接response 下载 文件。
$path = 'upload/' . $download->url; $domain = 'http://*****.bkt.clouddn.com'; $disk = Storage::disk('qiniu'); $validUrl = $disk->getAdapter()->getAuthManager() ->privateDownloadUrl($domain . '/' . $path);

这样子生成的链接 $validUrl 是可以下载文件的。不知道 response download 是否消耗服务器资源流量。当然如果消耗流量的话,就显示链接,不考虑弹出下载窗口了。

7年前 评论

@千山雪 如果是301 到$validUrl 是不消耗服务器的流量

7年前 评论

@千山雪 最好是301到$validUrl , 七牛有cdn,下载比较快

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!