以下为wxml (使用的vant小程序ui框架,需在json文件里自行引入)

<view class='clearFloat'><view class='upload_title'>头像展示(必填)<span class="basic_title_desc">(选一张好看的个人照片可以增加客户点击的机会哦)</span></view><view class='healthCertImg'><view class='imgrelative' wx:if="{{headIconArr}}" wx:for="{{headIconArr}}" wx:for-index="index" wx:for-item="item" wx:key="*this"><image class="image uploadimg" src="{{imgPath+item.key}}" mode="aspectFit" id="{{imgPath+item.key}}" catchtap='previewHeadIcon'>{{item}}</image><van-icon name="clear" custom-style="color:#979797;position:absolute;right:-20rpx;top:-20rpx;" id="{{index}}" bind:click="deleteHeadIcon" /></view><image src='../../imgs/upload.png' class='uploadimg upload_jkz' catchtap='headIcon' wx:if="{{IsHeadIcon}}"></image></view></view>

以下为wxss

.clearFloat {clear: both;overflow: hidden;
}
.upload_title {color: #222;font-size: 32rpx;margin-bottom: 16rpx;display: block;margin-top: 50rpx;
}
.imgrelative {position: relative;height: 164rpx;width: 164rpx;margin-right: 43rpx;float: left;
}
.uploadimg {height: 164rpx;width: 164rpx;float: left;
}

以下为json

{"usingComponents": {"van-popup": "../../vant/popup/index","van-area": "../../vant/area/index","van-icon": "../../vant/icon/index","van-toast": "../../vant/toast/index","van-datetime-picker": "../../vant/datetime-picker/index","van-field": "../../vant/field/index","upload": "../../component/upload/index"}
}

以下为js文件(涉及到封装的微信ajax和七牛云上传图片方法在下面)

const util = require('../../utils/util.js');
const qiniuUploader = require("../../utils/qiniuUploader");// 头像展示上传图片headIcon() {var that = thisthat.chooesImage(that, 1, function(res) {that.data.headIconArr.push(res)// console.log(that.data.ysCertImgArr.length)if (that.data.headIconArr.length >= 1) {that.setData({IsHeadIcon: false});}that.setData({headIconArr: that.data.headIconArr});})},// 头像展示预览与删除previewHeadIcon(e) {this._previewImage(e, this.data.headIconArr)},deleteHeadIcon(e) {var that = thisthat._deleteImage(e, that.data.headIconArr, function(files) {that.setData({headIconArr: files,IsHeadIcon: true});})},/*图片上传*/chooesImage(that, count, callback) {util.didPressChooesImage(that, count, function(filePath) {qiniuUploader.upload(filePath, (res) => {console.log(res)callback(res)that.checkSubmit()}, (error) => {console.error('error: ' + JSON.stringify(error));},null, // 可以使用上述参数,或者使用 null 作为参数占位符(progress) => {// console.log('上传进度', progress.progress)// console.log('已经上传的数据长度', progress.totalBytesSent)// console.log('预期需要上传的数据总长度', progress.totalBytesExpectedToSend)}, cancelTask => that.setData({cancelTask}));})},
/*图片预览*/_previewImage: function(e, arr) {var preUlrs = [];console.log(arr)const imgPath = 'https://cdn.wutongdaojia.com/'arr.map(function(value, index) {var key = imgPath + value.keypreUlrs.push(key);});wx.previewImage({current: e.currentTarget.id, // 当前显示图片的http链接urls: preUlrs // 需要预览的图片http链接列表})},/*图片删除*/_deleteImage: function(e, arr, callback) {var that = this;var files = arr;var index = e.currentTarget.dataset.index; //获取当前长按图片下标console.log(index)wx.showModal({title: '提示',content: '确定要删除此图片吗?',success: function(res) {if (res.confirm) {files.splice(index, 1);console.log(files)} else if (res.cancel) {return false;}// files,that.setData({isCanAddFile: true});that.checkSubmit()callback(files)}})},

以下为封装的七牛云上传图片方法(util.js)

const qiniuUploader = require("./qiniuUploader");
import api from './api.js';const getUploadToken = () => {var params = {token: wx.getStorageSync('token')}api.ajax("GET", params, "/weixin/getUploadToken").then(res => {console.log(res.data)initQiniu(res.data)});
}
// 初始化七牛相关参数
const initQiniu = (uptoken) => {var options = {region: 'NCN', // 华北区// uptokenURL: 'https://[yourserver.com]/api/uptoken',// cdn.wutongdaojia.com// uptokenURL: 'http://upload-z1.qiniup.com',// uptokenURL: 'https://yuesao.wutongdaojia.com/weixin/getUploadToken',// uptoken: 'xxx',uptoken: uptoken,// domain: 'http://[yourBucketId].bkt.clouddn.com',domain: 'space.bkt.clouddn.com',  // space为七牛云后台创建的空间shouldUseQiniuFileName: false};qiniuUploader.init(options);
}export function didPressChooesImage(that, count, callback) {getUploadToken();// 微信 API 选文件wx.chooseImage({count: count,success: function(res) {console.log(res)var filePath = res.tempFilePaths[0];console.log(filePath)callback(filePath)// 交给七牛上传}})
}/*** 文件上传* 服务器端上传:http(s)://up.qiniup.com* 客户端上传: http(s)://upload.qiniup.com* cdn.wutongdaojia.com*/
function uploader(file, callback) {initQiniu();qiniuUploader.upload(filePath, (res) => {// 每个文件上传成功后,处理相关的事情// 其中 info 是文件上传成功后,服务端返回的json,形式如// {//    "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",//    "key": "gogopher.jpg"//  }// 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.htmlthat.setData({'imageURL': res.imageURL,});}, (error) => {console.log('error: ' + error);},// , {//     region: 'NCN', // 华北区//     uptokenURL: 'https://[yourserver.com]/api/uptoken',//     domain: 'http://[yourBucketId].bkt.clouddn.com',//     shouldUseQiniuFileName: false//     key: 'testKeyNameLSAKDKASJDHKAS'//     uptokenURL: 'myServer.com/api/uptoken'// }null, // 可以使用上述参数,或者使用 null 作为参数占位符(res) => {console.log('上传进度', res.progress)console.log('已经上传的数据长度', res.totalBytesSent)console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)});
};
module.exports = {initQiniu: initQiniu,getUploadToken: getUploadToken,didPressChooesImage: didPressChooesImage
}

封装小程序wx.request(api.js)

const ajax = (Type, params, url) => {var methonType = "application/json";// var https = "http://www.wutongdaojia.com"var https = "https://yuesao.wutongdaojia.com"var st = new Date().getTime()if (Type == "POST") {methonType = "application/x-www-form-urlencoded"}return new Promise(function (resolve, reject) {wx.request({url: https + url,method: Type,data: params,header: {'content-type': methonType,'Muses-Timestamp': st,'version': 'v1.0' // 版本号// 'Muses-Signature': sign},success: function (res) {// if (res.statusCode != 200) {//   reject({ error: '服务器忙,请稍后重试', code: 500 });//   return;// }// resolve(res.data);wx.hideLoading()console.log(res)if (res.data.status == 200) {resolve(res.data);} else if (res.data.status == 400) {wx.showToast({title: res.data.message,icon: 'none',duration: 1000})return} else if (res.data.status == 401){wx.removeStorageSync('phone')wx.removeStorageSync('token')wx.showToast({title: res.data.message,icon: 'none',duration: 1000,success:function(){wx.navigateTo({url: '../login/index',})}})return} else {//错误信息处理wx.showToast({title: '服务器错误,请联系客服',icon: 'none',duration: 1000})}},fail: function (res) {// fail调用接口失败reject({ error: '网络错误', code: 0 });},complete: function (res) {// complete}})})
}

有什么不懂的可以加我微信(18310911617)
备注(说明来意)


小程序上传图片到七牛云(支持多张上传,预览,删除)相关推荐

  1. 小程序上传图片到七牛云

                                  小程序上传图片到七牛云 一.创建七牛云账号,获取ak.sk,创建对象存储空间名称 二.服务端接口获取七牛token值,个人使用的php编写的 ...

  2. 微信小程序上传图片到七牛云

    七牛云上传图片 第一次用七牛云,目的是存储一些图片 1.首先是七牛云的注册,很简单. 2.注册完创建新的空间 3.这时候会自动分配给你一个域名,但是有效期是30天. 4.若要长久使用,最好用自己的域名 ...

  3. 一款社区论坛小程序源码(修复登录图片发布上传问题)

    简介: 这是一款社区论坛小程序源码(修复登录图片发布上传问题) 内涵强大的功能 支持多种多样的发帖模式 比如发图文,发语音,发涂鸦,发视频等 另外也可以设置为只能会员才可以发 另外还拥有礼物功能,可以 ...

  4. java实现七牛云图片文件的上传

    java实现七牛云图片文件的上传 七牛云:https://portal.qiniu.com/create#resource 首先需要去注册一个账号实现实名认证 之后打开七牛云的 我们需要先创建一个储存 ...

  5. jsp使用七牛云API和webuploader上传多组图片

    文章目录 jsp使用七牛云API和webuploader上传多组图片 介绍 目录树 遇到的问题 上传组件的选择问题 进度条 多线程 前端界面 数据库 关键代码 UserPhotoDaoImpl Upl ...

  6. 小程序图片裁剪插件image-cropper实现个人头像上传裁剪功能

    小程序图片裁剪插件image-cropper实现个人头像上传裁剪功能 参考文档:小程序图片裁剪插件 image-cropper 整体效果流程图 一.第一步引入image-cropper,放在dist文 ...

  7. 微信小程序开发工具能正常请求后台数据,手机预览请求失败

    微信小程序开发工具能正常请求后台数据,手机预览请求失败 问题描述 微信开发者工具调试完想用手机预览效果,结果发现凡是后台请求都失败. 原因分析 可能的原因有三个: 微信开发者工具详情里的本地设置,没有 ...

  8. mac上传文件到七牛云,使用qshell上传文件到七牛云

    第一步:下载qshell(其实就是命令行,不是什么直接能打开的文件,也不是exe文件) 地址:https://developer.qiniu.com/kodo/tools/1302/qshell 选择 ...

  9. 钉钉小程序上传预览下载word,pdf文档等一系列问题

    钉钉小程序上传预览下载word,pdf文档等一系列问题 小程序"用完即走"的理念使得有着很好的发展市场,不仅微信小程序,支付宝,钉钉小程序等都受用户的喜爱. 刚接触了一个企业内部应 ...

最新文章

  1. sql server 2005 中的同义词
  2. 通过Zabbix全面监控NetScaler负载均衡设备
  3. tomcat常见面试题目问答Top10
  4. 下方点击出项上方对应的插件_你的PPT里装了几个插件?我赌你不知道TA!
  5. 修改window窗体的背景色
  6. VS当前不会命中断点 还没有为该文档加载任何符号
  7. SQL初级语法 [查询: SELECT]
  8. 计算机刷bios版本,主板刷bios的6种方法,电脑刷bios方法-
  9. 你必须了解的支撑研究蛋白质组学的3大技术
  10. Oracle EBS SLA Custom Sources(自定义来源)
  11. CDH集群更换IP处理方法
  12. 网站被黑之如何找到黑客
  13. LayaBox微信小游戏截图功能 利用微信API实现完美截图
  14. 图像处理--图像细化处理
  15. Swift基础(六)解包
  16. 安装hmc会依赖bios时间吗_Vmware 5.5下安装HMC7.3.2并安装Vmware tools
  17. 八数码 BFS+HASH
  18. 金融科技专利图景简析
  19. 教学设计--Scratch2.0入门介绍
  20. newifimini出厂固件_联想newifimini固件

热门文章

  1. Mysql 的隔离级别与锁
  2. 几篇关于Hadoop+Hive数据仓库的入门文章
  3. android 键盘的隐藏与显示
  4. 进程内存信息 /proc/[pid]/maps /proc/[pid]/smaps /proc/[pid]/status
  5. Web本地计算发展史
  6. Android system.img 打包解包
  7. SDNU 1430.十六进制转八进制(python)
  8. 【vue】vue.config.js
  9. Shell脚本编写及常见面试题
  10. JAVA常见异常种类