如何使用HTTP客户端下载文件?

$res = Http::get('https://player.alicdn.com/video/aliyunmedia.mp4')->body();
$name = 'video/video/' . now()->timestamp . rand(000000, 999999) . '.mp4';
Storage::disk('public')->put($name, $res);
dd(name);

如果是图片使用这样的方法ok 但是500M的视频使用这个方法就不行了!请问下有什么好的方法吗?谢谢!我使用的command!

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
jiangjun
最佳答案
     $ch = \curl_init($url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
     curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
     curl_setopt($ch, CURLOPT_BUFFERSIZE, 1024*1024);
     curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch ,$str) use ($savePath){
         $len = strlen($str);
         file_put_contents($savePath, $str, FILE_APPEND);
         return $len;
     });
     curl_exec($ch);
4年前 评论
讨论数量: 4
xianyunyehe

写个后台脚本异步去下载

4年前 评论
jiangjun

可以分块读取body,存写入文件后再读下一块。

4年前 评论
jiangjun
     $ch = \curl_init($url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
     curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
     curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
     curl_setopt($ch, CURLOPT_BUFFERSIZE, 1024*1024);
     curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($ch ,$str) use ($savePath){
         $len = strlen($str);
         file_put_contents($savePath, $str, FILE_APPEND);
         return $len;
     });
     curl_exec($ch);
4年前 评论

非root 权限的执行脚本,进程有个最大执行时间,set_time_limit(0)试一试看有没有用

4年前 评论

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