关于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搜网技术频道。