微信小程序上传图片组件自定义

最近在做微信小程序开发的时候,遇到了一个问题,就是图片上传于显示问题,微信自带的感觉用起来还是不方便,于是就萌生了自定义图片上传于显示组件

废话不多说直接上代码

首先创建一个imageview component组件,

1.wxml

<view class="img-list">

<view class="item" wx:for="{{imgList}}" wx:key="index" >

<image class="img" src="{{item}}" bindtap="preview" data-img="{{item}}" mode="aspectFill"></image>

<view wx:if="{{showDel}}" class="del" bindtap="del" data-index="{{index}}">

<image src="../../images/icon_delete_white.png"></image>

</view>

</view>

<view wx:if="{{imgList.length < maxCount && !disable}}" bindtap="upload" class="add item"></view>

</view>

2.wxss

.img-list {

display: flex;

align-items: flex-start;

flex-direction: row;

flex-wrap: wrap;

}

.item{

position: absolute;

}

.img-list .item {

width: 160rpx;

margin-left: 10rpx;

position: relative;

}

.img-list .item:first-child {

margin: 0;

}

.img-list .img {

width: 160rpx;

height: 160rpx;

border-radius: 10rpx;

/* background-color: rgba(0, 0, 0, .1); */

overflow: hidden;

}

.img-list .item .del {

text-align: center;

color: #ffffff;

background: #FF3434;

position: absolute;

top: 0;

right: 0;

z-index: 999;

border-top-right-radius: 10rpx;

}

.del image{

width: 28rpx;

height: 25rpx;

}

.img-list .add {

display: inline-block;

position: relative;

width: 160rpx;

height: 160rpx;

border-radius: 10rpx;

background-color: rgba(0, 0, 0, .1);

}

.img-list .add::after {

display: block;

position: absolute;

left: 50%;

top: 50%;

content: '+';

margin-top: -4rpx;

font-size: 80rpx;

color: white;

transform: translate(-50%,-50%);

}

3.json

{

"component": true,

"usingComponents": {}

}

4.js文件

Component({

/**

* 组件的属性列表

*/

properties: {

imgs: {

type: String,

value: ''

},

maxCount: { // 最大上传数量

type: Number,

value: 9

},

disable: { // 是否禁用

type: Boolean,

value: false

},

maxSize: { // 图片大小,以 M 为单位

type: Number,

value: 10

},

showDel: {

type: Boolean,

value: true

},

imgList: {

type: Array,

value: []

},

},

/**

* 组件的初始数据

*/

data: {

imgList: [],

showDel: false

},

/**

* 在组件实例进入页面节点树时执行

*/

attached() {

this.setImgList(this.data.imgs.split(';').filter(item => item))

},

/**

* 组件的方法列表

*/

methods: {

setImgList(data) {

this.setData({

imgList: data

})

// 给父组件传递图片

this.triggerEvent('upimgs', this.data.imgList.join(';'))

},

upload() {

wx.chooseImage({

count: 1,

sizeType: ['original', 'compressed'],

sourceType: ['album', 'camera'],

success: (res) => {

//res.tempFilePaths 返回图片本地文件路径列表

var imgList = this.data.imgList;

// 限制上传图片大小

if (this.data.maxSize * 1024 * 1024 < res.tempFiles[0].size) {

wx.showToast({

title: "上传文件过大,不可超过" + this.data.maxSize + "M!",

icon: "none",

});

return false

}

var access_token = wx.getStorageSync('access_token')

if (res.tempFilePaths.length > 0) {

for (var i = 0; i < res.tempFilePaths.length; i++) {

wx.uploadFile({

//网络请求

})

}

}

}

})

},

// 预览图片

preview(e) {

wx.previewImage({

current: e.currentTarget.dataset.img, // 当前显示图片的http链接

urls: [e.currentTarget.dataset.img] // 需要预览的图片http链接列表

})

},

// 删除图片

del(e) {

var imgList = this.data.imgList

imgList.splice(e.currentTarget.dataset.index, 1)

this.setImgList(imgList)

}

}

})

用法,首先在需要调用的页面的。json文件中引入组件

其次在页面中引用如下

<imageview imgs="{{imgList }}" maxCount="{{maxCount}}" bind:upimgs="upImgs"/>

拍照上传之后的回调,可以在当前页面中的。js文件获取

upImgs: function (e) {

console.log("上传图片回传结果==" + e.detail)

this.setData({

filePaths: e.detail,

})

},

到此就完成了图片上传自定义组件

组件中需要的图片请按自己需求查找

微信小程序图片(单图多图上传显示)相关推荐

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

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

  2. 小程序录音上传服务器,微信小程序录音实现功能并上传(使用node解析接收)

    微信小程序录音实现功能并上传(使用node解析接收) 发布时间:2020-09-04 11:59:06 来源:脚本之家 阅读:97 作者:weixin_43188227 背景 我在开发小程序的时候,有 ...

  3. taro开发微信小程序-添加开发者预览,上传测试版本(十四)

    taro开发微信小程序,上传测试版本,如果需要访问网络需要打开调试模式,如果配置了https协议的服务,提示对应的服务器证书无效,那么必须正确配置ssl证书,可以在阿里云或者腾讯云申请. 添加开发者预 ...

  4. 微信小程序聊天室+websocket+文件上传(发送图片)

    最近哥们在写微信小程序,其中有个需求是搭建一个聊天室,可多人聊天,可私聊,可发送图片.但是由于一直没有这方面相关的了解,于是慢慢的去看,去做,前期真的很困难,路子不好走,慢慢的再搭建. 先看看效果吧 ...

  5. 微信小程序环境下将文件上传到 OSS

    步骤 1: 配置 Bucket 跨域 客户端进行表单直传到 OSS 时,会从浏览器向 OSS 发送带有 Origin 的请求消息.OSS 对带有 Origin 头的请求消息会进行跨域规则(CORS)的 ...

  6. 微信小程序上传图片及文件(上传、下载、删除及预览)

    微信小程序上传附件 上传文件及图片 下载,预览.删除 自定义封装组件 哪儿用哪儿调用即可 wxml代码 <!-- <view>上传文件(我是子组件)</view> --& ...

  7. Udesk对接微信小程序实现商品浏览轨迹上传

    作者:张振琦 Udesk提供了小程序专用的行为轨迹SDK,可以用来收集客户的商品浏览轨迹,并在客服对话窗口中访问轨迹处可以查看. 在开发之前,需要先完成两个操作: 确认Udesk客服系统内绑定的小程序 ...

  8. Java生成微信小程序二维码、上传至阿里云OSS

    依赖 <!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifac ...

  9. 小程序上传视频的php接口处理,微信小程序[第十二篇] -- 上传视频

    通过上一篇的学习,我们可以成功将宝宝的照片传到指定相册了,但是可爱的宝宝岂能只有照片,小视频必须同步跟上,莫问题!咱这篇就来一个视频上传的实现. 俺家小核桃镇贴. 服务端 其实对于yii2程序而言,如 ...

最新文章

  1. html 右边是iframe 左右结构_HTML布局之左右结构,左边固定右边跟据父元素自适应...
  2. DevC++连接MySQL,使用mysql.h可用详细教程
  3. SAP中批量更改凭证行项目方法
  4. ROS探索总结(四)——简单的机器人仿真
  5. tyvj/joyOI 1305-最大子序和【单调队列】
  6. junit5和junit4_JUnit 5 –设置
  7. leetcode266. 回文排列
  8. 关闭共享的DOS命令
  9. 记住这两点,彻底终结原型链吧
  10. 使用Junit对Android应用进行单元测试
  11. 前端需要学python吗_python是前端语言吗
  12. java 1.5 jdk_jdk1.5安装及配置
  13. 19|雨季来临,聊些轻松的吧
  14. OSPF Vlink peer的配置
  15. 内核问题解决方法记录
  16. 专家学者热议智慧交通:大数据云计算,出行有“千里眼”
  17. 苹果笔记本双系统OS和win10,在win10下罗技M558蓝牙提示输入码无效
  18. 使用源码部署CITA(Ubuntu18.0.4 | VMware)
  19. 原生js实现星级评分
  20. 性能测试工具kylinPET的国产化道路

热门文章

  1. FPGA实现UHS的一些资料
  2. ubuntu 生成桌面快捷方式(有图)
  3. 数字图像处理与Python实现-沃尔什-哈达玛变换(Walsh-Hadmard Transform,WHT)
  4. 响应对象转json时属性名大小写问题完美解决
  5. 关于 用无线路由器组成的局域网内共享文件_习惯累积沉淀_新浪博客
  6. Java OOM问题分析 学习
  7. python 空集_Python——集(set)
  8. 国产Linux系统深度商店应用更新记录汇总(2021-12)
  9. win7计算机广告更改,Win7电脑如何找到带来弹窗广告的软件【图文教程】
  10. Python数据分析三剑客学习笔记Day6——matplotlib包的使用:数据可视化,简单绘制柱状图、曲线图、饼图、频率分布直方图