【tp5.1】七牛云上传图片
composer安装:
composer require qiniu/php-sdk
配置使用:
在tp5.1的配置文件app.php中配置七牛云的参数
'qiniu' => [
'accesskey' => '你的accesskey',
'secretkey' => '你的secretkey',
'bucket' => '存储空间',
'domain' => '域名'
],
前端使用webuploader上传
/*****加载AJAX上传图片******/
// 调用形式 Upload(元素编号,允许上传商品数量);
function Upload(i,num){
sumimg(num);
// var token = 'ZTEpdpZn1J1fLzgTfNtLXvRmcu0bjcnTUUhoQsEW';
var uploader = WebUploader.create({
auto: true,
swf: '/static/extends/lib/webuploader/0.1.5/Uploader.swf',//文件接收服务端。
server: '/admin/tool/uploadImg',//文件接收服务端。
pick: '#filePicker'+i,//指定选择文件的按钮容器
fileNumLimit: num,//文件数量
compress: {
// 图片质量,只有type为`image/jpeg`的时候才有效。
quality: 90,
},
accept: { //指定接受哪些类型的文件
title: 'Images',
extensions: 'gif,jpg,jpeg,bmp,png',
mimeTypes: 'image/*'
}
});
uploader;
//当文件被加入队列以后触发
uploader.on('fileQueued',function(file){
var $li = $(
'<div id="' + file.id + '" class="file-item thumbnail" onclick="delUpload(this,'+i+','+num+');">' +
'<input type="hidden" name="img[]" id="'+file.id+'id" />'+
'<img>' +
'<div class="info">开始上传图片...</div>' +
'</div>'
),
$img = $li.find('img');
$("#fileList"+i).append($li);//图片添加到容器
var sum = $("#fileList"+i).find('.file-item').length;
if(sum >= num){
$("#filePicker"+i).attr('style','display:none;');
}
// 创建缩略图显示
uploader.makeThumb(file,function(error,src){
if (error){
$img.replaceWith('<span>不能预览</span>');
return;
}
$img.attr('src',src);
},200,200);
});
// 文件上传过程中创建进度百分比实时显示。
uploader.on('uploadProgress',function(file,percentage){
$("#"+file.id+" .info").html('正在上传('+parseInt(percentage*100)+'%)');
}); //文件上传返回成功,判断是否成功上传到七牛
uploader.on('uploadSuccess', function(file,response){
if(response.code == 0){
$("#"+file.id+" .info").html('上传失败');
}else{
sumimg(num);
$("#"+file.id+" .info").html('上传完成,点击图片可删除');
$( '#'+file.id ).addClass('upload-state-done');
$( '#'+file.id+"id").val(response.data);//赋值到input
}
});
}
后台代码:
调用七牛
use Qiniu\Auth;
use Qiniu\Config;
use Qiniu\Storage\BucketManager;
use Qiniu\Storage\UploadManager;
上传图片:
// 初始化签权对象
$auth = new Auth($this->_accessKey,$this->_secretKey); $token = $auth->uploadToken($this->_bucket); // 构建 UploadManager 对象
$uploadMrg = new UploadManager(); // 上传文件到七牛
$files = $_FILES;
$values = array_values($files);
$saveName = hash_file('sha1', $values[0]['tmp_name']) . time();
list($ret, $err) = $uploadMrg->putFile($token, $saveName, $values[0]['tmp_name']); if ($err !== null) {
$return = [
'code' => 0,
'msg' => '上传图片失败'
];
} else {
$return = [
'code' => 1,
'msg' => '上传成功',
'data' => 'http://' . $this->_domain . '/' . $ret['key']
];
}
return json($return);
删除图片:
$img = Request::param('name');
$imgArr = explode('/',$img);
$delImgName = end($imgArr);
// 初始化签权对象
$auth = new Auth($this->_accessKey,$this->_secretKey);
$config = new Config();
// 管理资源
$bucketManager = new BucketManager($auth,$config);
// 删除文件操作
$res = $bucketManager -> delete($this->_bucket,$delImgName);
if (is_null($res) || $res == null) {
// 为null成功
$return = [
'code' => 1,
'msg' => '删除成功'
];
}else{
$return = [
'code' => 0,
'msg' => '删除失败'
];
}
return json($return);
【tp5.1】七牛云上传图片的更多相关文章
- 七牛云 上传图片 https 修改Nginx 注意事项
仅在这记录下,今天的事情. 问题出自于Nginx 设置http 强制跳转 https设置 1.上午,出于某些需求,我将服务器Nginx 设置http 强行跳转 https server { liste ...
- thinkphp5 tp5 七牛云 上传图片
七牛sdk地址https://files.cnblogs.com/files/zonglonglong/qiniu-php-sdk-7.2.2.rar 首先下载php的sdk将文件夹放到vendor ...
- Html5+Mui前端框架,开发记录(三):七牛云 上传图片
1.Html界面: <div id="container"> <label>凭证:</label> <div id="uploa ...
- thinkphp5 中使用 七牛云 上传图片和文件
原文链接:http://www.thinkphp.cn/code/3279.html 参考:https://blog.csdn.net/rain_web/article/details/7910542 ...
- 七牛云上传图片到cdn,cdn返回的是一个只有图片的url
如:
- 在node中使用promise上传图片到七牛云
为了分摊个人服务器压力.提升图片下载上传的速度,使用七牛云保存用户上传的图片. 后台基于express搭建的,上传使用七牛云第三方nodejs-sdk.由于七牛云上传图片只能单个进行,并且考虑到上传完 ...
- 上传图片到七牛云(服务端 node.js sdk)
大体思路 前端要上传图片到七牛云,需要有一个token进行授权操作,而获取这个上传的upload token(以下简称upToken),在服务端需要一定的身份校验,比如说:只有登录的vip用户才能拿到 ...
- PHP生成二维码并上传到七牛云
参考资料 qr-code生成二维码 七牛云上传图片 实现步骤 //拿到插入后的id $res = DB::table('book_book')->insertGetId($data); i ...
- 图床神器:七牛云 + Mpic + FScapture
概述 最近在搞Markdown的东西,遇到了一个很棘手的问题,即图片的显示:通用的图片,可以直接网上搜索,但有时候需要自己截一些图或者对下载的图片进行修改,在本地存储完全没有问题,但Markdown写 ...
随机推荐
- Java NIO(四) Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作.分散(sc ...
- matlab练习程序(广度优先搜索BFS、深度优先搜索DFS)
如此经典的算法竟一直没有单独的实现过,真是遗憾啊. 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过. 这次单独的将两个算法实现出来,因 ...
- 数字(int)转字符串和字符串转数字(int)
室友去面试,问了一个字符串转成数字的算法题,室友没搞出来,我心想,这个不是很简单的吗?于是动手在纸上画了画代码.画完后,总感觉哪里不对,最后一个个挖掘,才发现,尼玛,这到处都是坑啊---特此记录一下中 ...
- Android(java)学习笔记51:ScrollView用法
1. 理论部分 (1)ScrollView和HorizontalScrollView是为控件或者布局添加滚动条 (2)上述两个控件只能有一个孩子,但是它并不是传统意义上的容器 (3)上述两个控件可以互 ...
- auto create statistic script
--生成用户创建的statistic脚本 select object_name(stout.object_id), stout.name, 'CREATE STATISTICS '+ stout.na ...
- 郑州集训Day4 [小Cat与小鲜肉]
考试的时候由于没有想出这道题就弃疗了 发现主要还是自己姿势不够 [问题描述] \(P\) 校某宿舍人才辈出,其舍长图书馆男神因被偷拍侧身照而在网络上一票走红. 小鲜肉 \(SJY\) 是小 \(Cat ...
- 什么是微信小程序
官方给的说法是: 微信小程序,简称小程序,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用 总结发现有这么几点: 1.免安装(不需要单独安装,是依托微 ...
- POJ 1681 Painter's Problem 【高斯消元 二进制枚举】
任意门:http://poj.org/problem?id=1681 Painter's Problem Time Limit: 1000MS Memory Limit: 10000K Total ...
- 【iOS】那些年,遇到的小坑
'NSInvalidArgumentException', reason: '-[__NSPlaceholderDictionary initWithObjectsAndKeys:]: second ...
- 【luogu P2169 正则表达式】 题解
题目链接:https://www.luogu.org/problemnew/show/P2169 tarjan缩点 + SPFA 缩完点之后加边注意别写错. 也可以不用建两个图,可以在一张图上判断是否 ...