0

用php下载七牛云里的mp3文件的时候,时而可以时而不行,不知道是不是我下载的方式有问题,还是什么,请各位大佬给看一下:

$file_flow     = file_get_contents($url);
file_put_contents($save_path . '/' . $filename, $file_flow);

保存在本地的路径是对的,可以在本地生成相应的文件出来,但是有时候文件的大小为0kb,有时候下载下来的文件又是正常的,和七牛里的一样

不知道七牛云有没有下载限制什么的,我是拿同一个七牛的mp3文件进行测试的。

上面两张图片分别打印了成功和失败时候的输出。两个变量一个是七牛的mp3文件地址,另外一个是file_get_contents($url)获取的值,就是会出现获取值为空的情况。


补充:我是通过ajax请求php异步下载的,并不是那种点击某个a标签同步下载的方式。

2个回答

0

已采纳

刚刚不经意间貌似 察觉到了问题所在:

任何形式文件上传到七牛并转码的时候,转码的文件会先处于七牛的队列中,等待转码处理
但是七牛会即时的给你返回一个URL地址,而这个URL地址就是转码完毕后的文件URL
因为这个待转码的文件还处于队列中,所以这个返回过来的URL地址 可能还是个空资源

我就是根据即时返回的URL执行下载本地逻辑了,所以导致有时候,获取到的资源为空的情况,因为这个时候文件还处于转码的队列中,还没有完全转码完毕

这时候就需要等待一段时间,再去七牛下载转码过后的文件到本地了

下面是做的测试数据:

结果显示,七牛即时返回的URL过了2s左右,才真正的有资源(也就是转码完成了),我这只是上传的一个几十K的录音文件。

以上均是我的猜测,看到这里觉得我的猜测不对的,欢迎拍砖~~~

0

这里看到您的两个资源的访问结果都是404,您是否已经对文件进行了删除呢?


撰写答案