微信小程序上传图片+预览+删除


组件代码

HTML

<view class="uploadImg-wrap"><view class="upload-flex"><view wx:if="{{imgs.length!==total}}" bindtap='toUpload' class="upload-item" style="width:{{itemWidth}}px;height:{{itemWidth}}px"><view class="iconfont icon-upload"></view><view class="upload-text">上传图片</view></view><view bindtap='preview' wx:for="{{imgs}}" wx:key="key" class="upload-item-1" style="width:{{itemWidth}}px;height:{{itemWidth}}px" data-url='{{item}}'><image mode="aspectFit" style="width:100%;height:100%" src="{{item}}"></image><view catchtap='del' data-url='{{item}}' class="upload-close"><view class="iconfont icon-close" style="font-size:28rpx"></view></view></view></view>
</view>

CSS

@font-face {font-family: 'iconfont';  /* Project id 2580604 */src: url('//at.alicdn.com/t/font_2580604_kuvkydxjryh.woff2?t=1622731856871') format('woff2'),url('//at.alicdn.com/t/font_2580604_kuvkydxjryh.woff?t=1622731856871') format('woff'),url('//at.alicdn.com/t/font_2580604_kuvkydxjryh.ttf?t=1622731856871') format('truetype');}.iconfont {font-family: "iconfont" !important;font-size: 16px;font-style: normal;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;}.icon-close:before {content: "\e668";}.icon-upload:before {content: "\e682";}.icon-caps-lock:before {content: "\e667";}.icon-switch:before {content: "\e67f";}.icon-arrow-right:before {content: "\e665";}.icon-search:before {content: "\e67d";}.icon-arrow-left-bold:before {content: "\e685";}.uploadImg-wrap {width: 100%;}.upload-item {border: 1rpx solid rgb(226, 226, 226);display: flex;justify-content: center;align-items: center;flex-direction: column;box-sizing: border-box;}.upload-text {font-size: 28rpx;}.upload-flex {display: flex;flex-wrap: wrap;}.upload-item-1 {border: 1rpx solid rgb(226, 226, 226);padding: 10rpx;display: flex;justify-content: center;align-items: center;flex-direction: column;box-sizing: border-box;position: relative;
}
.upload-close {width: 40rpx;height: 40rpx;border-radius: 50%;border: 1rpx solid rgb(116, 116, 116);position: absolute;top: 0;left: 0;display: flex;justify-content: center;align-items: center;color: rgb(116, 116, 116);
}

JS

Component({lifetimes: {attached: function () {// 在组件实例进入页面节点树时执行},ready: function () {let that = thisthis.createSelectorQuery().select('.uploadImg-wrap').boundingClientRect(rect => {that.setData({itemWidth: rect.width / 4})console.log(rect.width);}).exec();}},/*** 组件的属性列表*/properties: {//上传图片接口uploadUrl: {type: String,value: 'https://example.weixin.qq.com/upload'},//最大一次性图片数count: {type: Number,value: 4},//总图片数total: {type: Number,value: 4}},/*** 组件的初始数据*/data: {itemWidth: 0,imgs: []},/*** 组件的方法列表*/methods: {//预览preview(options){let imgs = this.data.imgs//后端返回只有名字// let newimgs = []// imgs.forEach(value=>{//   newimgs.push('服务器url' +value)// })// wx.previewImage({//   current: '服务器url'+options.currentTarget.dataset.url,//   urls: newimgs// })//后端返回的图片具体路径wx.previewImage({current: options.currentTarget.dataset.url,urls: imgs})},//删除图片del(options){let url = options.currentTarget.dataset.urllet oldimgs = this.data.imgslet imgs = oldimgs.filter(value=>{if(value!=url){return value}})this.setData({imgs})},//上传图片upload(tempFilePaths, i) {wx.showLoading({title: '上传中',})let that = thiswx.uploadFile({url: that.data.uploadUrl,filePath: tempFilePaths[i],name: 'file',success(r) {//这里只需要修改JSON.parse(r.data).data.url 确保得到的是图片路径,取数据按实际返回结果let url = JSON.parse(r.data).data.url//endlet imgs = that.data.imgsimgs.push(url)that.setData({imgs}, _ => {that.triggerEvent("action",that.data.imgs);if (i == tempFilePaths.length - 1) {wx.hideLoading()return}that.upload(tempFilePaths, i + 1)})}})},toUpload() {let that = thiswx.chooseImage({count: that.data.count,sizeType: ['original', 'compressed'],sourceType: ['album', 'camera'],success(res) {let tempFilePaths = res.tempFilePathsthat.upload(tempFilePaths, 0)}})},}
})

页面调用

<uploadImg uploadUrl='上传图片接口' bind:action='action'></uploadImg>

JS

const app = getApp()Page({data: {show:'none'},
//组件上传文件图片后调用的当前页面方法action(data){console.log('图片路径',data.detail)},onLoad() {},
})

微信小程序上传图片组件,多选+单选+预览+删除相关推荐

  1. 微信小程序 删除服务器图片,微信小程序实现图片上传放大预览删除代码

    本文实例为大家分享了微信小程序图片上传放大预览的具体代码,供大家参考,具体内容如下 image.js代码: = 9) { this.setData({ lenMore: 1 }); setTimeou ...

  2. 微信小程序 多图片上传 支持预览 删除 设置数量上限

    github地址: https://github.com/Volcano-Yang/miniprogram-picture-upload Miniprogram-Picture-Upload 努力帮助 ...

  3. 微信小程序功能:商品收藏-图片预览-客服-分享-加入购物车

    微信小程序–商品详情页面 包含功能点: 商品收藏 图片预览 客服 分享 加入购物车 跳转到购物车页面(注意:open-type="switchTab") 结构:goods_deta ...

  4. uniapp实现h5、app、微信小程序三端pdf文件下载和预览

    以下代码兼容三端,app,h5,微信小程序,经过个人测试 手机端有两种方法,使用renderjs或者uniapp的api 两者的区别 使用renderjs的写法,会提示用户是否下载文件,下载完成后用户 ...

  5. 微信小程序系列——点击图片放大预览

    需求 开发的时候,把图片放到页面上,点击图片没有任何反应,不能放大也不能缩小 这怎么能行!!! 所以需求来了:点击图片能够把图片弹出来,这样就能放大图片看细节了! 实现步骤 微信提供了预览图片的接口, ...

  6. 微信小程序:previewImage实现图片放大预览效果

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 前言 记录一下做项目的过程中遇到的图片放大预览效果的实现 实现的是点击图片可以放大预览,这个效果在京东淘宝都可以看到 ...

  7. 微信小程序:点击图片进行预览

    在开发需求中,经常有类似与九宫格的图片展示,当点击图片时进行图片的预览,如果多图的情况还可以左右滑动. 小程序中具体实现效果如下: WXML <view class='imgList'> ...

  8. 微信小程序image组件开发程序以及相关图片问题参考资料汇总

    微信小程序image组件开发程序以及相关图片问题参考资料汇总,希望对大家小程序开发能有一定的参考和借鉴价值.以下汇总主要涉及到微信小程序image组件有关资源路径.缩放和剪裁模式等进行的探讨,无论是对 ...

  9. 适配mpvue平台的的微信小程序日历组件mpvue-calendar

    mpvue-calendar 基于vue-calendar的适配mpvue平台的的微信小程序日历组件 预览 安装 npm i mpvue-calendar 使用 import Calendar fro ...

最新文章

  1. JavaScript 数据类型转换
  2. 再次探扩展-对xVal进行扩展解决验证不同步的问题
  3. Mac环境下Redis的安装与配置
  4. 读债务危机0901:第三部分48个案例研究概要-核心术语表 1、国际收支差额:一个国家/货币区的个人或机构与世界其他地区之间进行的所有交易的余额。 2、国际收支危机:经济危机的一种,表现为一国的国际收
  5. SQL编程where子句与操作符
  6. NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」
  7. python 在gui中显示logging_如何在GUI中显示print()的输出python
  8. 微软Scott CIO也要代表公司拜访客户
  9. 正则表达式基础知识,持续更新…
  10. 如何理解 if __name__ == “__main__“:
  11. 自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真
  12. 让电脑假装蓝屏的C语言,如何自己手动让电脑假装死机
  13. 用C#写经理评分系统
  14. alsa buffer原理_ALSA driver--HW Buffer
  15. Ken Thompson的话
  16. 基于FPGA的乒乓ram控制系统设计
  17. 怎么样用云服务器进行深度学习
  18. mac改变ipv4地址无法上网
  19. Android 自定义viewpage + videoview 实现竖屏视频播放效果
  20. intersect的用法

热门文章

  1. Pro JavaScript Techniques (Pro)
  2. [Tarjan][并查集][dp] Jzoj P4253 QYQ在艾泽拉斯
  3. STM32CUBEIDE(13)----IIC之配置OLED
  4. linux 服务器Redis清除指定key缓存
  5. AES加密算法原理简述
  6. MATLAB绘图与图形
  7. 从小说网站上爬取数据
  8. B站上的高能学习资源来了,c/c++、Java、python、机器学习、大前端......
  9. 打印实心三角形(半个菱形)
  10. Docker系列-安装 kafka 单机版本