七牛云是国内领先的企业级公有云服务商,它所提供免费的对象存储服务。访问速度稳定,适宜中小型项目的个人网站利用搭建网站图床,从而节省服务器空间。
本文将对官方phpsdk使用、扩展,搭建自己网站的图床
安装
七牛phpsdk安装非常便捷。可以通过composer安装,也可直接下载源码包拷入项目。具体参考:https://developer.qiniu.com/kodo/sdk/php
创建存储空间
1.注册账号后,在七牛个人中心进入对象存储。
2.新建存储空间,如不想让他人使用自己空间的图片,应选择私有空间,更加安全。
3.选择私有空间后,需记录的信息有存储空间名称,测试域名(也可绑定自己的域名),公钥、私钥(在个人中心–密钥管理查看)。
创建基础类
官方提供了phpsdk,为使用方便,应创建一个个人公共图片上传、下载类。基础代码如下:
<?php
namespace app\common\model;
use Qiniu\Auth;
use Qiniu\Processing\ImageUrlBuilder;
use Qiniu\Storage\UploadManager;
use think\Db;
use think\Model;
class Img extends Base
{
protected $accessKey = '这里填公钥';
protected $secretKey = '这里填私钥';
protected $temp_path = ROOT_PATH . 'public' . DS . 'uploads/temp'; //服务器暂存地址
protected $bucket = 'test'; //图片存储空间
protected $url = 'http://dfdsfsdf.bkt.clouddn.com'; //绑定域名
}
图片上传
图片上传采用先上传至服务器暂存,得到上传路径。然后调用本方法,将服务器内图片上传至七牛,上传成功后再删掉暂存区图片。
/*
* 向七牛上传单张图片
* @param 在本地服务器存储路径
* @return $status 1成功,2失败
* @success key hash
* @error $msg*/
public function uploadOne($image_path)
{
$auth = new Auth($this->accessKey,$this->secretKey);
$bucket = $this->bucket; //选择存储空间
$token = $auth->uploadToken($bucket); //获取token(私有空间每次上传需要认证)
$upload_path = $this->temp_path.'/'.$image_path; //本地存储路径
$key = $image_path; //在本地服务器存储路径
$uploadMgr = new UploadManager();
list($res,$err) = $uploadMgr->putFile($token,$key,$upload_path); //上传操作
$return = array();
if(empty($err)){ //上传成功
//unlink($upload_path); 删除服务器内文件(可延迟删除)
$return = $res;
$return['path'] = $image_path;
$return['status'] = 1;
}else{ //上传失败
$return['msg'] = $err;
$return['status'] = 2;
}
return $return;
}
图片上传成功后,应根据本地数据库写回调,将返回的key和hash存入数据库。
图片读取
利用上传时获取的key,得到图片地址。
/*
* 从七牛获取单张图片原图链接地址
* @param str $key
* @return str $url*/
public function getOneImg($key)
{
$auth = new Auth($this->accessKey,$this->secretKey);
$baseUrl = $this->url.'/'.$key;
$authUrl = $auth->privateDownloadUrl($baseUrl);
return $authUrl;
}
以上便可完成图床搭建所需的上传、下载(读取)功能。