首先是composer;
composer require qiniu/php-sdk
封装一个方法方便调用
namespace tool\qiniu;
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
class Qiniu
{
static private $accessKey = "wVQ_Q0xhOlbqjlda02316GuymOmwJq48lt_YB9SC";
static private $secretKey = "0973uDj-kRxA6VsvEXH-VxAh592oemjmhbXVSAB0";
static private $bucket = "lanjinghexuan";
static private $http_host = "qy64cs0vy.hd-bkt.clouddn.com";
//获取上传凭证后表单上传
public function token()
{
$auth = new Auth(self::$accessKey, self::$secretKey);
$token = $auth->uploadToken(self::$bucket);
return json(['status' => 1, 'msg' => '成功', 'data' => $token]);
}
//服务器直传
public static function image()
{
if(empty($_FILES['file']['tmp_name'])){
explode('图片不合法',404);
}
// 要上传文件的临时文件
$file = $_FILES['file']['tmp_name'];
$pathinfo = pathinfo($_FILES['file']['name']);
// 通过pathinfo函数获取图片后缀名
$ext = $pathinfo['extension'];
$conf = config('qiniu');
// 构建鉴权对象
$auth = new Auth($conf['ak'],$conf['sk']);
// 生成上传需要的token
$token = $auth->uploadToken($conf['bucket']);
// 上传到七牛后保存的文件名
$filename = date('Y').'/'.date('m').'/'.substr(md5($file),8,5).date('Ymd').rand(0,9999).'.'.$ext;
// 初始化UploadManager类
$uploadMgr = new UploadManager();
list($res,$err) = $uploadMgr->putFile($token,$filename,$file);
if($err !== null){
return null;
}else{
//返回文件整个路径
return self::$http_host.'/'.$filename;
}
}
}
在别的地方调用;
\tool\qiniu\Qiniu::image();
关于文件删除
public static function delimage($delFileName)
{
// 判断是否是图片 目前测试,简单判断
$isImage = preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $delFileName);
if(!$isImage){
return false;
}
$conf = config('qiniu');
// 构建鉴权对象
$auth = new Auth($conf['ak'],$conf['sk']);
// 配置
$config = new \Qiniu\Config();
// 管理资源
$bucketManager = new \Qiniu\Storage\BucketManager($auth, $config);
// 删除文件操作
$res = $bucketManager->delete($conf['bucket'], $delFileName);
if (is_null($res)) {
// 为null成功
echo '删除失败';
return true;
}
dump('删除成功');
return false;
}
首先文件删除必须传文件名
调用的例子
$img = input('img');
\tool\qiniu\Qiniu::delimage($img);
|