美文网首页
使用七牛云PHP-SDK将网上图片上传到自己的七牛云空间

使用七牛云PHP-SDK将网上图片上传到自己的七牛云空间

作者: 雨醉风尘 | 来源:发表于2017-10-09 23:45 被阅读635次

七牛云是一个便捷的数据云存储平台。通过官方社区社区SDK你可以方便通过程序上传文件到自己的空间中。下面的这个小 Demo 是通过 七牛官方 PHP-SDK 将一个网上的图片url 上传到自己的七牛 Bucket 中。这个 Demo 的关键点是使用 curl 读取图片内容,然后在将读取的图片内容通过指定 MIME 上传到指定 Bucket 即可。

  • 安装 七牛云 PHP-SDK
git clone https://github.com/qiniu/php-sdk.git

  • Demo 的文件结构
image
  • Demo 代码

<?php

require_once __DIR__ . './autoload.php';

use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

class uploadImage {

    public $access_key;
    public $secret_key;
    public $bucket;

    public function __construct()
    {
        $this->access_key = '填写你的七牛云 access_key';
        $this->secret_key = '填写你的七牛云 secret_key';
        $this->bucket = '填写你的七牛云 bucket';
    }

    /*
     * @ 上传远端图片
     * @ 2017/10/09
     * @ 雨醉风尘
     * */
    public function uploadImg($imgUrl)
    {
        #读取网上图片内容
        $imageData = self::getImgData($imgUrl);

        $auth  = new Auth($this->access_key, $this->secret_key); 
        
        $token = $auth->uploadToken($this->bucket);

        #上传的文件名
        $key   = 'imgUrl_'.microtime(true).'.jpg';
        $up    = new UploadManager();
        $mime  = 'image/jpeg';

        list($rest, $err) = $up->put($token, $key, $imageData, null, $mime);
        if ($err) {
            echo '<pre>';
            print_r($err);
        } else {
            echo '<pre>';
            print_r($rest);
            $domain = '上传 Bucket 外链默认';
            
            #获取上传到七牛云的图片url
            $uploadUrl = $domain.$rest['key'];
            
            echo "<img src=$uploadUrl>";   //图片显示
        }
    }

    protected function getImgData($imgUrl)
    {
        $ch = curl_init($imgUrl);

        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

        //读取图片信息
        $rawData = curl_exec($ch);
        curl_close($ch);

        //读取文件到本地
        //file_put_contents('aa.png',$rawData);

        return $rawData;
    }
}

$upTest = new uploadImage();

$uploadImageUrl = "http://s3.cn.bing.net/th?id=OJ.z0O2eyRKKpwmZQ&pid=MSNJVFeeds";

$upTest->uploadImg($uploadImageUrl);

  • 程序执行结果
image
  • 在 七牛云 后台查看 是否存在 imgUrl_1507562883.5045.jpg 文件
image

-:)

相关文章

网友评论

      本文标题:使用七牛云PHP-SDK将网上图片上传到自己的七牛云空间

      本文链接:https://www.haomeiwen.com/subject/ufjmyxtx.html