ThinkPHP6上传图片至七牛云

您的位置:3搜网 > 技术 > ThinkPHP6上传图片至七牛云

ThinkPHP6上传图片至七牛云

来源:3搜网分类:技术时间:2022-09-28 16:43:46浏览量:

关于ThinkPHP6上传图片至七牛云以下文字资料是由3搜网小编为大家搜集整理后发布的内容,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“ThinkPHP6上传图片至七牛云”文章吧。

第一步:七牛云官网下载官方PHP SDK

composer require qiniu/php-sdk
第二步:创建配置文件


[QINIU]
AK = ******************// id
SK = ******************// 秘钥
BUCKET = ******************// 要上传的空间
DOMAIN = ******************// 空间域名
关于上传文件到七牛云中,如图片等文件,要注意的点:

1)七牛云中,需要使用 对象存储 功能,这个需要付费;

2)开通对象存储功能后,新建存储空间,新建完存储空间后,会自动弹出绑定CDN域名,这个可填也可不填;

3)新建空间完成后,点击空间名,就会看到相关信息,而我上面配置文件中 image_url地址就是 的地址;

第三步:创建上传到七牛的图片上传控制器中使用

//控制器中加载
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use Qiniu\Storage\BucketManager;

/***************************************************
     * 上传图片到七牛
     * @param $request
     */
    public function qiniuupload()
    {
    	if(request()->isPost()){
    		/**
    		 * 上传图片
    		 * */
	        // 获取上传图片信息
	        $file = request()->file('file');
	        // 图片存储在本地的临时路经
	        $filePath = $file->getRealPath();
	        // 获取图片后缀
	        $ext = $file->getOriginalExtension();
	        // 上传到七牛后保存的新图片名
	        $datename = date('Y') . '/' . date('m') .'/';
	        $newImageName  = $datename . substr(md5($file->getOriginalName()),0,6)
	         . date('YmdHis') . rand(00000,99999) . '.'.$ext;
	        // 说明:为了方便阅读,上一行代码进行的回车,如果你的遇到了问题,请放到一行
	         
	        // 构建鉴权对象
	        $auth = new Auth(env('qiniu.ak') , env('qiniu.sk'));
	        // 要上传的空间位置
	        $token = $auth->uploadToken(env('qiniu.bucket'));

	        // 初始化 UploadManager 对象并进行文件的上传。
	        $uploadMgr = new UploadManager();
	        list($ret , $err) = $uploadMgr->putFile($token , $newImageName , $filePath);
	        if($err !== null){
	            return null;
	        }else{
	            // 图片上传成功
	            $model = new Attachment;
	            $model->name = str_replace($datename, '', $newImageName);
	            $model->title = str_replace($datename, '', $newImageName);
	            $model->class = 'shop';
	            $model->path = $newImageName;
	            $model->status = '0';
	            $model->save();
	            return json(['code'=>0,'msg'=>'','filePath'=>env('qiniu.domain').$newImageName,'name'=>$newImageName,'imgId'=>rand(),'status'=>200]);
	            // return $newImageName;
	        }
        }else{
        	/**
        	 * 删除图片
        	 * */
        	$path = input('imgsrc');
        	// $path = str_replace(env('qiniu.domain'), '', input('imgsrc'));
        	try {
        		Attachment::where(['path'=>$path])->delete();
                // @unlink(str_replace('/upload', 'upload', $path));
                // @unlink($path);

        		// 构建鉴权对象
        		$auth = new Auth(env('qiniu.ak'),env('qiniu.sk'));
        		// 配置
        		$config = new \Qiniu\Config();
        		// 管理资源
        		$bucketManager = new BucketManager($auth, $config);
        		// 删除文件操作
        		$delFileName = $path;
        		$res = $bucketManager->delete(env('qiniu.bucket'), $delFileName);
				if (is_null($res)) {
					// 为null成功
					return json(['code'=>0,'msg'=>'删除成功','status'=>200]);
				}else{
					return json(['code'=>0,'msg'=>'删除失败','status'=>400]);
				}
        	} catch (\Exception $e) {
        		return $e->getMessage();
        	}
        }
    }

第四步:视图中使用HTML

<div class="layui-form-item layui-upload-drag" id="test10">
		  <i class="layui-icon"></i>
		  <p>点击上传微信二维码</p>
		  <div class="layui-hide" id="uploadDemoView10">
		    <hr>
		    <img src="" width="100" height="100" class="uploadimg" alt="上传成功后渲染1" style="max-width: 196px">
		  </div>
		  <input type="hidden" name="codeimg" class="codeimg">
	  </div>

第五步:视图中使用JS

//拖拽上传微信二维码
	upload.render({
	    elem: '#test10'
        , accept: 'images' /* 只能传图片 */
        , acceptMime: 'image/*' /* 打开文件选择器时 只显示图片*/
	    ,url: "{:url('/user/index/qiniuupload')}" //此处用的是第三方的 http 请求演示,实际使用时改成您自己的上传接口即可。
	    ,before: function(obj){
	    	layer.load(); //上传loading
	    	var imgsrc = $('#test10 .uploadimg').attr('data');
	    	if (imgsrc) {
	            $.get("{:url('/user/index/qiniuupload')}",{'imgsrc':imgsrc},function (data) {
	            	// console.log(data);
	            });
            }
	    }
	    ,done: function(res){
            layer.closeAll('loading'); //关闭loading
	      	layer.msg('上传成功');
	      	layui.$('#uploadDemoView10').removeClass('layui-hide').find('img').attr('src', res.filePath);
	      	layui.$('#uploadDemoView10').removeClass('layui-hide').find('img').attr('data', res.name);
	      	$('.codeimg').val(res.name);
	      	// console.log(res)
	    }
	});

以上就是关于“ThinkPHP6上传图片至七牛云”这篇文章的内容,希望分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注3搜网技术频道。

标签:ThinkPHP6tp6