微信小程序 上传多张图片及删除、预览

news/2024/7/20 3:39:04 标签: 小程序

今天做项目,正好遇到在小程序中需要实现从本地文件中一次选择上传多张图片,同时要支持删除和预览效果。先看下效果图:

上传图片点击上传的图片进行预览模式

1、上传按钮代码:

<!-- 添加图片按钮  -->
    <view class="question-images-tool">
      <button type="warn" bindtap="chooseImage" wx:if="{{images.length < 9}}">添加图片</button>
    </view>

在button中我添加了一个按钮类型为 warn, 这个类型只是使用官方自带的样式。
在这里插入图片描述
wx:if="{{images.length < 9}}" 这里是最多只能上传9张图片,可根据自己的需求更改。

3、上传图片缩略图代码:

 <!-- 图片缩略图  -->
    <view class="question-images">
      <block wx:for="{{images}}" wx:key="*this">
        <view class="q-image-wrap">
          <image class="q-image" src="{{item}}" mode="aspectFill" data-idx="{{index}}" bindtap="handleImagePreview"></image>
          <view class="q-image-remover" data-idx="{{index}}" bindtap="removeImage">X</view>
        </view>
      </block>
    </view>

这里的代码是指上传后的图片代码

4、上传图片的js

import { $init, $digest } from '../utils/common.util'
const wxUploadFile = promisify(wx.uploadFile)

Page({
  data: {
	titleCount: 0,
    contentCount: 0,
    title: '',
    content: '',
    images: [],
  }
	//上传图片
  onLoad(options) {
    $init(this)
  },

  handleTitleInput(e) {
    const value = e.detail.value
    this.data.title = value
    this.data.titleCount = value.length
    $digest(this)
  },

  handleContentInput(e) {
    const value = e.detail.value
    this.data.content = value
    this.data.contentCount = value.length
    $digest(this)
  },

  chooseImage(e) {
    wx.chooseImage({
      count: 9,// 最多可以选择的图片张数,默认9
      sizeType: ['original', 'compressed'], // original 原图,compressed 压缩图,默认二者都有
      sourceType: ['album', 'camera'],// album 从相册选图,camera 使用相机,默认二者都有
      success: res => {
        const images = this.data.images.concat(res.tempFilePaths)
        this.data.images = images.length <= 9 ? images : images.slice(0, 9)// 限制最多只能留下9张照片
        $digest(this)
      }
    })
  },
  //删除
  removeImage(e) {
    const idx = e.target.dataset.idx
    this.data.images.splice(idx, 1)
    $digest(this)
  },
  //预览图片
  handleImagePreview(e) {
    const idx = e.target.dataset.idx
    const images = this.data.images

    wx.previewImage({
      current: images[idx],//当前预览的图片
      urls: images,//所有要预览的图片
    })
  },
  })

以上就是上传图片及删除、预览的所有内容了,样式就不写了。可以自己根据自己的审美去调整页面美观。


http://www.niftyadmin.cn/n/1510665.html

相关文章

微信小程序页面返回顶部效果

给大家分享一个微信小程序页面返回顶部的效果&#xff0c;具体内容如下&#xff1a; 1、wxml代码 <scroll-view scroll-y scroll-with-animationtrue scroll-top{{ topNum }}><view>1</view><view>1</view><view>1</view><view&…

Nodejs编码转化问题

目前Node.js仅支持hex、utf8、ascii、binary、base64、ucs2几种编码的转换。对于GBK&#xff0c;GB2312等编码&#xff0c;Nodejs自带的toString()方法不支持&#xff0c;因此中文转化的时候需要加载第三方库&#xff0c;主要有两个编码转换库iconv-lite和encoding&#xff0c;…

mysql java测试_java 连接mysql 并测试是否成功

java 连接mysql 并测试是否成功。package com.test.tool;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class JDBCUtlTool {publi…

asp.neti 加密三种方式

public string Get_MD5_Method1(string strSource){System.Security.Cryptography.MD5 md5 new System.Security.Cryptography.MD5CryptoServiceProvider();//获取密文字节数组 byte[] bytResult md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));//转换成…

并查集c++代码_并查集经典-岛屿问题-除法问题

什么是并查集&#xff1a;上次mentor和其他小伙伴开会&#xff0c;对对方说&#xff0c;啊&#xff0c;你用并查集去做啊&#xff0c;并查集电话那头传来一阵沉默。什么是并查集&#xff1f;mentor急了 啊就是一种算法&#xff0c;一种算法。对方。。。算法&#xff1f;&#x…

微信小程序中使用Echarts 折线图、柱形图、饼状图

在做小程序时需要用到图表&#xff0c;今天就研究了下Echarts在小程序中怎么使用。在官方文档上看了下如何使用及基本配置方法&#xff0c;包括如何在json、js中引入&#xff0c;具体配置和引入方法可以多看下Echart官方文档。&#xff08;官方文档地址&#xff1a;https://ech…

mysql 5.6初始化数据库_求高手帮忙解决有关mysql5.6.10安装初始化数据库问题

服务器版本&#xff1a;FreeBSD8.4_64需要原来装有mysql5.1&#xff0c;想再另外一个目录安装一个5.6的版本tar zxvf mysql-5.6.10.tar.gzcd mysql-5.6.10pkg_add -r -v cmake(我这里是源码包安装的)--设置安装路径cmake -DCMAKE_INSTALL_PREFIX/usr/local/mysql2--编译安装mak…

Response.Redirect 打开新窗体的两种方法

普通情况下&#xff0c;Response.Redirect 方法是在server端进行转向&#xff0c;因此&#xff0c;除非使用 Response.Write("<script>window.locationhttp://dotnet.aspx.cc;</script>") 方法外&#xff0c;是不能在新窗体打开所指定的 URL 地址的。可…