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


