Page({data: {images: [],count: 3,  //设置最多三张图片},chooseImage: function () {var self = this;var images = self.data.images;var imagesShow = self.data.imagesShow;var count = self.data.count - images.length; //设置最多三张图片wx.chooseImage({count: count, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有success: function (res) {for (var i = 0, h = res.tempFilePaths.length; i < h; i++) {images.push(res.tempFilePaths[i]);imagesShow.push(res.tempFilePaths[i]);self.setData({images: images,imagesShow: imagesShow})}// console.log(res)// 返回选定照片的本地文件路径列表,tempFilePath为图片路径数组可以作为img标签的src属性显示图片// self.uploadImg(res,//   function (url) {//     images.push(url);//     self.setData({//       images: images,//     })//     //console.log(self.data.images)//   })}})},clickImage: function (e) {let self = this;let current = e.target.dataset.src;wx.previewImage({current: current,urls: [current],fail: function () {console.log('fail')},complete: function () {console.info("点击图片了");},})},uploadImg: function (res, callback) {var tempFilePaths = res.tempFilePaths;//启动上传等待中...  wx.showToast({title: '上传中...',icon: 'loading',mask: true,duration: 10000})var uploadImgCount = 0;for (var i = 0, h = tempFilePaths.length; i < h; i++) {wx.uploadFile({url: app.globalData.Host + '/upload/upload',//app.globalData.Host为实际测试开发地址filePath: tempFilePaths[i],name: 'file',//这个就是传个后台图片路径所对应的keyformData: {},header: {'content-type': 'multipart/form-data'},success: function (res) {uploadImgCount++;var data = JSON.parse(res.data);//console.log(data)//console.log(data.data)if (data.data) {//如果是最后一张,则隐藏等待中  if (uploadImgCount == tempFilePaths.length) {wx.hideToast();}callback(data.data)} else {wx.hideToast();wx.showToast({title: '上传图片失败',icon: 'none',duration: 1500})}},fail: function (res) {wx.hideToast();wx.showToast({title: '上传图片失败',icon: 'none',duration: 1500})}});}},deleteImage: function (e) {let self = this;let index = e.target.dataset.index;let images = self.data.images;let imagesShow = self.data.imagesShow;images.splice(index, 1);imagesShow.splice(index, 1);this.setData({images: images,imagesShow: imagesShow,})},
})
<view class="add-image"><view class="images-box" wx:if="{{imagesShow.length>0}}" wx:for="{{imagesShow}}" wx:for-item="item" wx:key="image"><image data-index="{{index}}" data-src="{{item}}" src="{{item}}" bindtap="clickImage"></image><image class="delete-image" data-index="{{index}}" src="/images/img_del.png" bindtap="deleteImage"></image></view><view class="images-box" wx:if="{{imagesShow.length<count}}"><image src="/images/img_add.png" bindtap="chooseImage"></image></view></view>

添加图片按钮 与 删除图片按钮 图片

       

微信小程序——选择图片,上传图片,点击查看大图,删除图片相关推荐

  1. 微信小程序选择和上传图片

    文章目录 微信小程序选择和上传图片 微信小程序选择和上传图片 选择和上传图片用到的api: wx.chooseImage() 和 wx.uploadFile() 具体实现代码如下: wx.choose ...

  2. 微信小程序——焦点图 可预览查看大图缩放(多张可左右滑动) 带页码 loading 加载中 / https不显示图

    微信小程序焦点图,可以滑动预览大图缩放 微信小程序自带焦点图swiper ,但是没有页码,只有小圆点,所以要自己写 (在查看大图时遇到一个问题,安卓上查看大图部分图不显示,经排查,发现不显示的图片地址 ...

  3. 微信小程序选择框问题 小程序picker点击显示object range-key=这里写要显示的字段

    微信小程序选择框问题 小程序picker点击显示object range-key="这里写要显示的字段" <picker bindchange="bindClass ...

  4. 微信小程序云开发如何实现上传视频 以及 图片

    微信小程序云开发如何实现上传视频 以及 图片 最基础的数据库增删改查,上传到云存储即可实现,附源码 wxml文件 <button bindtap="upload">上传 ...

  5. 微信小程序选择视频,获取封面缩略图

    使用微信小程序选择视频,且获取其封面 使用微信小程序选择视频上传,且获取其封面 背景 名词 参考 效果图展示 结束: 使用微信小程序选择视频上传,且获取其封面 背景 又一活儿,要从小程序里选择视频,上 ...

  6. 微信小程序:限制上传图片大小

    微信小程序:限制上传图片大小 page({data:{Size:2*1024*1024,//定义大小}, )} //限制上传图片大小(2M)for(let i=0;i<res.tempFiles ...

  7. 微信小程序---地图导航(点击地址,可以进行导航)

    微信小程序-地图导航(点击地址,可以进行导航) // 地图getLocation(e){var that = this,address = e.currentTarget.dataset.addres ...

  8. 《微信小程序案例6》点击图片上传,从本地相册选择或打开摄像头拍摄上传照片

    点击一下相机图片实现上传本都相册图片或者打开摄像头拍照上传 使用微信小程序API里面的wx.chooseImage 实现点击并上传图片后把上传的图片放入上面的虚线框里面. 方法: 在wx.choose ...

  9. 微信小程序 - 选择图片、预览图片、删除图片

    为什么80%的码农都做不了架构师?>>>    小程序开发中你可能会遇到上传的图片首先会选择图片之后预览看下或者不满意需要删除图片,才会提交吧,这样应该是一个比较好的处理方式. 微信 ...

  10. 微信小程序选择图片(相册中选择/相机拍摄)

    微信小程序中关于选择函数有专门的函数: wx.chooseImage(Object object) 从本地相册选择图片或使用相机拍照. 参数 Object object 属性 类型 默认值 必填 说明 ...

最新文章

  1. SpringMVC核心技术---转发和重定向
  2. Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略
  3. (二)Docker配置修改阿里云镜像仓库
  4. 爬取异步请求(XHR/JS)数据方法
  5. ES6模板字符串【${}配合反单引号一起用】
  6. (转)最强Android模拟器genymotion的安装与配置
  7. 库克为 iOS 操碎了心
  8. 何时在脚本标记中需要CDATA节?
  9. foobar2000 v1.2
  10. 数据结构与算法面试题80道
  11. 用计算机弹生僻字乐谱,生僻字 E调(拇指琴卡林巴琴弹奏谱)
  12. 任正非讲话稿400篇_伟大背后是苦难!任正非“思想之路”:400+讲话稿合集
  13. Redhat、Fedora、CentOS、OEL之间的关系与不同。
  14. java部门人员结构树
  15. 抢红包算法 c语言版本,抢红包算法实现示例
  16. OPPO Watch 2五大亮点加持 定位旗舰全智能手表
  17. 访问到页面的完整流程
  18. 学习python的书籍
  19. 外媒曝华为“达芬奇计划” 或对英伟达构成威胁
  20. android shell 中查询wifi密码信息

热门文章

  1. 机器人暮色枪骑皮肤_LOL银白枪骑布里茨皮肤鉴赏 暮色枪骑布里茨怎么样
  2. win10关机后自动重启_电脑自动关机或重启的解决办法(笔记本)
  3. 玩绝地求生:刺激战场如何设置灵敏度效果最好?刺激战场灵敏度攻略分享
  4. 谁说全军出击灵敏度没用的?分享一下全军出击的二指和三指全新灵敏度
  5. S9全球总决赛全网直播,腾讯云成最强辅助
  6. 阿里测试开发实习生面经
  7. php购票排位_购票终于不用“站着”排队啦!
  8. Octave在Mac上的下载安装基本使用
  9. C语言占位符及各种变量占用字节数
  10. 网易云音乐如何将多个账号的音乐合并到一个账号