七牛云是一个便捷的数据云存储平台。通过官方或社区社区SDK你可以方便通过程序上传文件到自己的空间中。下面的这个小 Demo 是通过 七牛官方 PHP-SDK 将一个网上的图片url 上传到自己的七牛 Bucket 中。这个 Demo 的关键点是使用 curl 读取图片内容,然后在将读取的图片内容通过指定 MIME 上传到指定 Bucket 即可。
- 安装 七牛云 PHP-SDK
git clone https://github.com/qiniu/php-sdk.git
- Demo 的文件结构
- 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);
- 程序执行结果
- 在 七牛云 后台查看 是否存在
imgUrl_1507562883.5045.jpg
文件