PHP后端利用七牛快速搭建个人网站图床

七牛云是国内领先的企业级公有云服务商,它所提供免费的对象存储服务。访问速度稳定,适宜中小型项目的个人网站利用搭建网站图床,从而节省服务器空间。

本文将对官方phpsdk使用、扩展,搭建自己网站的图床

安装

七牛phpsdk安装非常便捷。可以通过composer安装,也可直接下载源码包拷入项目。具体参考:https://developer.qiniu.com/kodo/sdk/php

创建存储空间

1.注册账号后,在七牛个人中心进入对象存储。
PHP后端利用七牛快速搭建个人网站图床_第1张图片

2.新建存储空间,如不想让他人使用自己空间的图片,应选择私有空间,更加安全。
PHP后端利用七牛快速搭建个人网站图床_第2张图片

3.选择私有空间后,需记录的信息有存储空间名称,测试域名(也可绑定自己的域名),公钥、私钥(在个人中心–密钥管理查看)。

创建基础类

官方提供了phpsdk,为使用方便,应创建一个个人公共图片上传、下载类。基础代码如下:



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;
}




以上便可完成图床搭建所需的上传、下载(读取)功能。

你可能感兴趣的:(PHP)