ThinkPHP框架下使用七牛云上传图片(文件)与删除
七牛云好处:云存储,云加速,CDN镜像存储等等,自直观的说,就是把一些静态文件如:css、js、图片等存储到七牛云,然后通过一个分配的或者自己绑定的域名开启CDN加速去访问,这样既减少了自己的服务器压力,又也减少了宽带,非常适合个人,或者一些中小型企业网站使用。
注册七牛云账号
到对象存储新建一个存储空间,并记下名称
到个人中心 -> 密钥管理获取密钥:AK和SK
下载七牛云的SDK推荐使用Composer下载
php composer.phar require qiniu/php-sdk
代码实例
// 引入类文件 use Qiniu\Auth; use Qiniu\Storage\UploadManager;
/** * 共用部分 */ protected $token; const BUCKET = '空间名字'; //七牛云空间名 const DOMAIN = 'http://'.'你的域名'.'/'; //CDN加速域名 const ACCESS_KEY = '你的AK密钥'; //七牛云密钥AK const SECRET_KEY = '你的SK密钥'; //七牛云密钥SK // 初始化自动加载方法 public function initialize(){ $auth = new Auth(self::ACCESS_KEY, self::SECRET_KEY); // 生成上传Token $this->token = $auth->uploadToken(self::BUCKET); }
/** * 上传部分 * @param array $file 图片参数 * @return array */ public function uploadOne() { $data = $this->request->file("img"); //获取到图片的信息 $info = $data->getInfo(); //把图片信息转为数组 $info['name'] = md5(time().mt_rand(10000000,99999999).$_SERVER['REMOTE_ADDR']).substr($info['name'],strrpos($info['name'],".")); //生成永远不重复的图片名 // 构建UploadManager对象 $uploadMgr = new UploadManager(); list($ret, $err) = $uploadMgr->putFile($this->token, $info['name'], $info['tmp_name']); // 判断是否上传成功 if ($err !== null) { return ['err' => 0, 'data' => '上传失败']; } else { //返回图片的完整URL return ['code' => 1, 'msg' => '上传完成', 'data' => (self::DOMAIN . $ret['key'])]; } }
/** * 删除图片 * @return bool */ public static function delimage() { $delFileName = "778bf3208bf2b62d288b5572074d6512.png"; //要删除的图片文件,与七牛云空间存在的文件名称相同 // 判断是否是图片 目前测试,简单判断 $isImage = preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/',$delFileName); if(!$isImage){ return false; } // 构建鉴权对象 $auth = new Auth(self::ACCESS_KEY, self::SECRET_KEY); // 配置 $config = new \Qiniu\Config(); // 管理资源 $bucketManager = new \Qiniu\Storage\BucketManager($auth, $config); // 删除文件操作 $res = $bucketManager->delete(self::BUCKET, $delFileName); if (is_null($res['1'])) { return true; //删除成功了 } return false; //删除失败了 }