首页 > 其他分享 >七牛云异步第三方资源抓取

七牛云异步第三方资源抓取

时间:2022-10-23 11:57:25浏览次数:51  
标签:异步 set 七牛云 img url accessKey 抓取 file

七牛云的文档,这块写的不太行呀,坑了我一早上之后才搞完

    /*
    * 七牛云异步第三方资源抓取
    * $img_url 文件url
    * @return Qiniu\Http\Response Object
    */
    public function qiniuFetch($img_url)
    {
        $secrectKey = set('secrectKey');
        $accessKey = set('accessKey');
        $qiniubucket = set('qiniubucket');
        $qiniudomain = set('qiniudomain');
        $zone = 'z2'; // 华东:z0;华北z1;华南:z2;北美:na0;东南亚:as0

        $file_dir = 'article/'.date('Ymd').'/'; // 文件路径
        $file_type = pathinfo(parse_url($img_url)['path'])['extension'];// 文件类型(文件直接上传,七牛云不会指定文件类型,需要自己定义)
        $file_name = time() . uniqid().'.'.$file_type; // 文件名

        $bodyArr = ["url" => $img_url, "bucket" => $qiniubucket, "key" => $file_dir . $file_name];
        $body = json_encode($bodyArr);

        $this->auth = new Auth($accessKey, $secrectKey);
        $url = 'http://api-'.$zone.'.qiniu.com/sisyphus/fetch';
        $method = 'POST';
        $contentType = 'application/json';
        $rtcToken = $this->auth->authorizationV2($url, $method, $body, $contentType);
        $rtcToken['Content-Type'] = $contentType;
        $result =  Client::post($url, $body, $rtcToken);

        // 成功则返回七牛云url,失败则返回原url
        if ($result->statusCode == 200) {
            $data['img_yun_url'] = 'http://'.$qiniudomain.'/'.$file_dir . $file_name;
        } else {
            $data['img_yun_url'] = $img_url;
        }
        return $data;
    }

 

标签:异步,set,七牛云,img,url,accessKey,抓取,file
From: https://www.cnblogs.com/seanpan/p/16818254.html

相关文章

  • Java异步编程CompletableFuture
    https://blog.csdn.net/zsx_xiaoxin/article/details/123898171 https://blog.csdn.net/qq_31865983/article/details/106137777?spm=1001.2101.3001.6650.9&utm_medium......
  • 采集文章图片,上传到本地或者七牛云
    最近写了一个新需求,要求是采集回来的文章,图片替换成自己的url,可以选择保存本地或者七牛云七牛云原方案是下载到本地,但是获取不到,就作罢了,改用七牛云异步第三方资源抓取的......
  • 异步编程6个最佳实践
    1.尽量不要编写返回值类型为void的异步方法在通常情况下,建议大家不要编写那种返回值类型为void的异步方法,因为这样做会破坏该方法的启动者与方法本身之间的约定,这套约定本......
  • .NET 异步
    异步基础所谓异步,对于计算密集型的任务,是以线程为基础的,而在具体使用中,使用线程池里面的线程还是新建独立线程,取决于具体的任务量;对于 I/O 密集型任务的异步,是以 Windo......
  • 安卓中实现异步任务(2)——使用AsyncTask实现
    安卓中实现异步任务(2)——使用AsyncTask实现问题背景上次的文章大致介绍了几种安卓汇总实现异步任务的方法,讲得比较简要,有朋友问到具体的实现方式,现在开始分列几篇文章详细......
  • 安卓中实现异步任务(3)——使用HandlerThread实现
    #安卓中实现异步任务(3)——使用HandlerThread实现问题背景上篇文章大致介绍了几种安卓汇总实现异步任务的方法,讲得比较简要,有朋友问到具体的实现方式,现在开始分列几篇文章......
  • 安卓中实现异步任务(4)——使用线程池实现
    安卓中实现异步任务(4)——使用线程池实现问题背景上篇文章大致介绍了几种安卓汇总实现异步任务的方法,讲得比较简要,有朋友问到具体的实现方式,现在开始分列几篇文章详细介绍......
  • Generator函数异步应用
    协程协程的流程:协程A执行,执行到一半就将执行权转移给协程B,协程B交还执行权,然后A恢复执行。如下所示:function*asyncJob(){...varf=yieldreadFile(fileA);......
  • devexpress中grid控件教程 多线程异步加载数据,进度条展示
    devexpress中最强大的控件,要数它的Grid了。几乎任务数据都可以展示,但今天要用它做另一个功能。假设我们开发这样一款软件:视频编辑软件。里面有个功能,提取视频中的音频。一......
  • 利用redis作为消息队列实现异步秒杀业务
    实现消费券秒杀的优化,在加入限时抢购的优惠券时,自动的将消费券的库存stock信息也加入到redis中(可设为抢购结束后过期)抢购之前在redis中进行库存是否充足(stock)、用户是否已......