TP5上传图片到七牛云,并且删除七牛云的图片
一,通过composer 下载七牛云 sdk
composer require qiniu/php-sdk
二,手动下载七牛云sdk
1,https://developer.qiniu.com/kodo/sdk/1241/php 在这链接里面下载PHP 的sdk文件夹
2,解压放在 vendor 文件夹下面
3,前端通过layui 向后端发起请求
4,后端数据的处理
5,以下是上传图片到七牛云的 前端和后端的源码
前端:
layui.use('upload', function () {
var $ = layui.jquery
, upload = layui.upload;
//详情图片
var uploadInst = upload.render({
elem: '#pica'
, url: '/入口文件/product/intedral_img/detailsKey'
,accept:"images"
,done: function(obj){
console.log(obj)
if(obj.code==1){
$("#diva").append("<span><img src='七牛云的域名"+obj.key+"' tid="+obj.key+" style='width:50px' id='imgs'><i style='cursor:pointer' tid="+obj.key+">x</i></span>");
}
}
});
后端:
/**
* 添加积分详情图片
* 将图片上传到七牛云
* @return false|string|\think\response\Json
* @throws \Exception
*/
public function detailsKey(){
// 用于签名的公钥和私钥
$accessKey = $this->accessKey;//这个数据,我是在当前类调用的
$secretKey = $this->secretKey;
// 初始化签权对象
$auth = new Auth($this->accessKey, $this->secretKey);
// 空间名
$bucket = $this->bucket;
// 生成上传Token
$token = $auth->uploadToken($bucket);
// 构建 UploadManager 对象
$uploadMgr = new UploadManager();
// 上传文件到七牛
$filePath = $_FILES['file']['tmp_name']; //获取上传的图片、文件
$filename = 'image/details/'.date("Y").'/'.date("m").'/'.date("d").'/'.time().$_FILES["file"]["name"];
list($ret, $err) = $uploadMgr->putFile($token, $filename, $filePath);
if ($err !== null) {
return json_encode(['code'=>0,'message'=>'上传失败']);
} else {
return json(['code'=>1,'key'=>$ret['key']]);
}
}
三,删除七牛云中上传的图片
前端:
后端:
以下代码
前端代码
window.del = function(that) {
var tid = $(that).attr("tid");
var span = $(that).parent()
$.ajax({
url:"/xJoPMmqHhQ.php/product/intedral_img/delImg",
dataType:'json',
data:{img:tid},
method:'post',
success:function(res){
if(res.code==1){
layer.msg('成功',{icon:1,title:'提示',time:1000});
span.remove();
}else{
layer.msg('失败',{icon:1,title:'提示',time:1000});
}
}
});
}
后端代码
//删除七牛云的图片
public function delimage($delFileName)
{
// 判断是否是图片 目前测试,简单判断
$isImage = preg_match('/.*(\.png|\.jpg|\.jpeg|\.gif)$/', $delFileName);
if(!$isImage){
return false;
}
// 构建鉴权对象
$auth = new Auth($this->accessKey, $this->secretKey);
// 配置
$config = new \Qiniu\Config();
// 管理资源
$bucketManager = new BucketManager($auth, $config);
// 删除文件操作
$res = $bucketManager->delete( $this->bucket, $delFileName);
//为空就删除成功
if (is_null($res)) {
$this->success('删除成功');
}
$this->error('删除图片失败');
}
}
TP5上传图片到七牛云,并且删除七牛云的图片的更多相关文章
- 利用ThinkPHP自带的七牛云驱动上传文件到七牛云以及删除七牛云文件方法
一.准备工作 1.注册七牛云账号 2.选择对象储存->创建空间->设置为公开 3.在config配置文件中添加以下代码 'UPLOAD_FILE_QINIU' => array ( ...
- C#获取七牛云token/删除七牛云图片接口
// 获取七牛token public ApiResponse GetQiniuToken(QiniuToken req) { try { Mac mac = new Mac(req.AccessKe ...
- php七牛批量删除空间内的所有文件方法
相信大家都在使用七牛的免费云存储服务的同时,有清空七牛云存储镜像文件或者批量删除七牛云空间文件的需求,该怎么做?官方的工具好像并没有提供批量删除的功能,七牛云官方给出的建议是删除空间,再新建一个这样太 ...
- 1) 上传多张图片时 ,对 $_FILES 的处理. upload ; 2)fileinput 上传多张图片. 3) 修改,删除的时候删除原来的资源,图片 update, delete , 删除 4)生成器中两个字段上传图片的时候,要修改生成器生成的代码
1上传多张图片, 要对 $_FILES进行 重新处理. //添加 public function addCourseAlbumAction() { $CourseAlbumModel = new Co ...
- 【Silverlight】Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System)
[Silverlight]Bing Maps学习系列(七):使用Bing Maps的图片系统(Tile System) 目前包括微软必应地图在内的几乎所有在线电子地图(如:Google Maps等)都 ...
- vue <input type="file">上传图片、预览、删除
使用原生<input type="file">上传图片.预览.删除:multiple实现可上传多张 参数名 类型 说明 fileTypes Array 文件类型, 默认 ...
- spring mvc 图片上传,图片压缩、跨域解决、 按天生成文件夹 ,删除,限制为图片代码等相关配置
spring mvc 图片上传,跨域解决 按天生成文件夹 ,删除,限制为图片代码,等相关配置 fs.root=data/ #fs.root=/home/dev/fs/ #fs.root=D:/fs/ ...
- WPF中删除打开过的图片
在WPF中,当我们删除打开过的图片时,往往会遇到"...无法删除,文件正在被另一个进程使用"的异常.即使当前文件是打开后关闭过的也不行. 这个问题的原因很简单,是因为WPF的缓存策 ...
- 动态加载/删除css文件以及图片预加载
动态加载/删除css文件以及图片预加载 功能模块页面 最近,工作中遇到了一个比较奇葩的需求:要在一个页面(PC端)增加一个功能模块,但是这个页面在不久之后要重构,为了新增加的模块可以继续复用, ...
随机推荐
- 20190926-02Redis五大数据类型之Set 000 028
- SpringMVC-整合SSM
整合SSM 目录 整合SSM 1. 设计流程 2. 创建一个数据库表 3. 配置依赖 4. 准备项目框架 5. Mybatis层 1. 编写实体类 2. 编写Mapper接口和xml 1. Mappi ...
- Minimizing maximizer(POJ 1769)
原题如下: Minimizing maximizer Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 5104 Accep ...
- 渣渣的Leetcode之旅(Python3)_1.两数之和
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标.你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用两遍 ...
- dict字典,以及字典的一些基本应用
dict表示方法: dict={}或d=dict() 1.字典的增:d['元素名']='元素值'.或d.setdefault('key','value') 2.字典的删:d.pop(key).或del ...
- C++ Templates (2.3 类模板的局部使用 Partial Usage of Class Templates)
返回完整目录 目录 2.3 类模板的局部使用 Partial Usage of Class Templates 2.3.1 Concepts 2.3 类模板的局部使用 Partial Usage of ...
- apisix docker镜像构建及插件化开发
高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...
- RXJAVA之创建被观察者
RXJava中提供了多种创建数据源的方式 使用create方法 Observable<String> observable = Observable.create(new Observab ...
- MybatisPlus根据模板生成器代码
导读 网上的代码生成器,都不是自己想要的,今天下午研究了下,可以使用mybatisplus自定义模板,根据模板生成相应的代码,可以根据需求,改造相应模板即可.代码已上传github/百度云. 项目结构 ...
- Orchard Core创建CMS/Blog站点
安装.NET Core SDK 下载并安装当前最新版本.NET Core SDK 3.1: https://dotnet.microsoft.com/download 安装visual studio ...