thinkphp6+七牛云上传

413 阅读1分钟

安装

七牛云开发文档:developer.qiniu.com/kodo 对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器,具有读写速度快,利于分享的特点。

(一)Composer 安装 SDK(推荐使用)
进入cmd 终端,切换目录到你部署项目的根目录下,执行以下命令即可:composer require qiniu/php-sdk
(二)传统方式安装
进入七牛云,下载官方 PHP-SDK,将下载下来的SDK解压,放入项目第三库文件(vendor 或者 extend)

添加处理

引入
use Qiniu\Config;
use Qiniu\Storage\BucketManager;

use Qiniu\Auth;
use Qiniu\Storage\UploadManager;

     public function insert(){
            $data=input('post.');
            $file = $_FILES;

        //本地的文件路径
        $localFilePath = $file['file']['tmp_name'];
        // print_r($localFilePath);die();    
        //截取文件后缀名
        //$suffix = '.jpg';
         $suffix = strtolower(substr($file['file']['name'],strpos($file['file'['name'],'.')));
           //生成一个唯一的文件名称,重命名 (md5加密原文件名+秒+随机数)
        $fileName = md5($file['file']['name']) . date('s',time()) . rand(1,9999999);
        $fileName .= $suffix;

        //上传七牛云业务逻辑
        $accessKey = ''; //去控制台的秘钥管理拿AK
        $secretKey = '';//去控制台的秘钥管理拿SK
        $auth = new Auth($accessKey, $secretKey);
        //七牛云桶名,根据自己实际进行填写
        $bucket = '';
        // 生成上传Token
        $token = $auth->uploadToken($bucket);
        // 构建 UploadManager 对象
        $uploadMgr = new UploadManager();

        // 调用 UploadManager 的 putFile 方法进行文件的上传。
        list($ret, $err) = $uploadMgr->putFile($token, $fileName, $localFilePath);

        //错误信息提示
        if ($err != null) {
            //可调整为错误页面
           return json([
               'msg'=>'上传失败',
               'code'=>201,
               'result'=>''
           ]);
        }

        //把七牛云图片路径存储到我们自己的数据库  七牛云图片路径
        $data['thumbnail_pic_s'] = 'http://qttirgeqg.hn-bkt.clouddn.com/' . $fileName;
        
        //入库业务逻辑 create save 只有这两个模型方法才能自动写入时间戳
        $result =News::create($data);

        return json([
            'msg'=>'上传成功',
            'code'=>200,
            'result'=>$result
        ]);
    }
    <a href="javascript:if(confirm('确认删除吗?'))window.location='http://www.month.com/dele?id={$v.id}&status={$v.status}'">删除</a>

封装三要素

function writeJson($result=null,$msg=null,$errorCode=0){
    $date=[
        'errorCode'=>$errorCode,
        'data'=>$result,
        'msg'=>$msg
    ];
    return json($date);
}

域名防盗

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !month24.com [NC]  #这是可以盗链的域名或IP地址
RewriteRule .*\.(jpg|png|jpgrar|zip)$ https:www.baidu.com [R,NC,L] #如果不符合可以访问图的域名或者ip,则走这一步