我的编程空间,编程开发者的网络收藏夹
学习永远不晚

微信小程序图片上传功能的实现方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

微信小程序图片上传功能的实现方法

前言

最近做了个小程序,涉及到了图片上传的功能,今天给大家详细介绍下如何实现小程序图片上传,话不多说先上代码

首先是静态布局和样式部分

.wxml代码部分

<view class='load-img'>
    <view class='load-box'>
      <view class='img-item' wx:for="{{fileList}}" wx:key="index" >
        <image class="lazy" data-src="{{item.path}}" data-class="lazy" data-src="{{item}}" mode="aspectFill" data-list="{{fileList}}" bindtap=""></image>
        <icon class='icon' type="clear" size="20" color='#EF4444' catchtap='_onDelTab' data-idx="{{index}}" wx:if="{{!prevent}}"/>
      </view>
      <image class='img-add' bindtap='_addImg' wx:if="{{!prevent}}"></image>
    </view>
  </view>

.wxss代码部分


.load-name {
    height: 80rpx;
    line-height: 80rpx;
    font-size: 30rpx;
  }
  .load-box {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
  }
  .img-item, .img-add {
    position: relative;
    width: 140rpx;
    height: 140rpx;
    margin: 20rpx;
  }
  .img-add {
    border: 1px solid #ccc;
  }
  .img-add:after{
    width: 1rpx;
    height: 50rpx;
    content: " ";
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    background-color: #ccc;
  }
  .img-add:before{
    position: absolute;
    top: 50%;
    right: 31%;
    width: 50rpx;
    height: 1rpx;
    content: " ";
    display: inline-block;
    background-color: #ccc;  
  }
  
  .img-item {
    margin-right: 20rpx;
  }
  .img-item image {
    width: 100%;
    height: 100%;
    border-radius: 10rpx;
  }
  .icon {
    position: absolute;
    top: 0;
    right: 0;
  }

以上这些基本代码就可以完成图片上传,显示,删除等样式布局

下面是js的部分,我已详细备注~~~

先来看下完整的代码


const app = getApp();
Component({
  properties: {
    fileList: {
      type: Array
    },
    prevent: {
      type: Boolean,
      value: false
    }
  },
  data: {
    fileList: []
  },
  ready() {},
  methods: {
    // 点击加号进入手机相册,并进行图片选择
    _addImg() {
      let _this = this;
      // 此方法为微信小程序自带api 详情访问https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html
      wx.chooseImage({
        count: 5,
        success(res) {
          //此处会返回图片暂存路径和文件大小
          const data = res.tempFiles;
          _this.setFile(data)
        }
      })
    },
    setFile (data) {
      // 将wx.chooseImage返回的数据进行扩展
      data.map((item, index) => {
        // 通过路径截取文件后缀名
        const fileFormat = item.path.substring(item.path.lastIndexOf(".") + 1, item.path.length);
        // wx.getFileSystemManager()小程序文件管理器api,可以将通过文件路径将其转换成64编码
        const fileManager = wx.getFileSystemManager();
        const base64 = fileManager.readFileSync(item.path, 'base64');
        item.fileContent = base64;
        item.fileSize = item.size;
        // 通过时间获取随机13位随机数并且拼接文件后缀进行文件命名
        item.fileName = this.getFileName(13) + '.' + fileFormat;
        // 此处操作是用来进行选中图片显示的,只有这样拼接才能显示base64编码的路径
        item.path = `data:image/${fileFormat};base64,${base64}`;;
      })
      this.setData({ 
        fileList: this.data.fileList.concat(data)
      });
      // 此处操作是用来将获取到的文件数据传递给父组件进行文件上传
      this.triggerEvent('imageChange', this.data.fileList)
    },
    // 随机生成文件名
    getFileName (m) {
      m = m > 13 ? 13 : m;
      var num = new Date().getTime();
      return num.toString().substring(13 - m);
    },
    点击进行图片删除
    _onDelTab(e) {
      // 获取图片索引
      let idx = e.currentTarget.dataset.idx;
      let delFile = this.data.fileList[idx];
      console.log(delFile);
      this.data.fileList.splice(idx, 1);
      this.setData({
        fileList: this.data.fileList
      })
      this.triggerEvent('imageDel', delFile);
    }
})

代码里对代码的备注已经很明确了,大家仔细扒一下,根据的自己的项目进行相应的调整,基本上都是没问题的,~~不要直接直接粘贴不复置,我是直接在我的项目中直接拿过来的代码,直接粘贴复制肯定是不行的!!!~~

大家需要注意的是这里

通常在真机上点击选中图片后wx.chooseImage方法中返回的文件路径是wxfile:开头的路径,这样的路径想直接转成base64,上面的方式是可以实现的,我也是查了很多资料才找到的解决办法。

再一个需要注意的是image class="lazy" data-src属性想显示base64格式的图片要进行字符串拼接才可以正常显示如下图

好啦这些就是我小程序上传图片的操作,这些只是我对日常工作的积累,不喜勿喷 不喜勿喷 不喜勿喷 重要的事情说三遍大家仔细看下代码理解用法,还是很简单的,看都不看想白漂肯定是不行的呦~~~~~~~~~

总结

到此这篇关于微信小程序图片上传功能的文章就介绍到这了,更多相关微信小程序图片上传功能内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

微信小程序图片上传功能的实现方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

微信小程序实现图片上传功能

微信小程序实现图片上传功能随着移动互联网的发展,微信小程序已经成为了人们生活中不可或缺的一部分。微信小程序不仅提供了丰富的应用场景,还支持开发者自定义功能,其中包括图片上传功能。本文将介绍如何在微信小程序中实现图片上传功能,并提供具体的代码
微信小程序实现图片上传功能
2023-11-21

微信小程序图片上传功能怎么实现

这篇文章主要介绍“微信小程序图片上传功能怎么实现”,在日常操作中,相信很多人在微信小程序图片上传功能怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序图片上传功能怎么实现”的疑惑有所帮助!接下来
2023-06-30

微信小程序实现图片裁剪并上传功能

微信小程序实现图片裁剪并上传功能随着微信小程序的快速发展,越来越多的开发者开始关注微信小程序的开发技巧和功能实现。其中,图片裁剪并上传功能是一个常见的需求,本文将介绍如何在微信小程序中实现图片裁剪并上传的功能,并提供具体的代码示例。一、功能
微信小程序实现图片裁剪并上传功能
2023-11-21

微信小程序实现图片上传功能的思路与源码

我们日常开发中经常需要用到图片上传功能,这篇文章主要给大家介绍了关于微信小程序实现图片上传功能的思路与源码的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
2022-11-16

uniapp小程序上传图片功能的实现

本篇文章我们研究一下,在移动端开发过程中经常使用到的图片上传功能,在大多数小程序或者APP中都会遇到一些实名认证或者头像上传的功能,对uniapp小程序上传图片功能感兴趣的朋友跟随小编一起看看吧
2023-01-10

微信小程序实现图片裁剪功能

微信小程序实现图片裁剪功能随着微信小程序的快速发展,越来越多的开发者开始探索小程序的潜力。其中,图片处理功能是小程序中常见的需求之一。本文将介绍如何在微信小程序中实现图片裁剪功能,并提供具体的代码示例,帮助开发者快速实现这一功能。准备工作在
微信小程序实现图片裁剪功能
2023-11-21

微信小程序实现图片预览功能

微信小程序是一种轻量级的应用程序,可以在微信中直接使用,具有跨平台、操作方便等优点。在开发过程中,经常会遇到需要实现图片预览功能的需求。本文即将给出一个具体的代码示例,教你如何在微信小程序中实现图片预览功能。首先,我们需要在微信小程序的页面
微信小程序实现图片预览功能
2023-11-21

微信小程序图片裁剪功能的实现

文章目录 图片上传与处理图片尺寸适配图片显示与裁剪框裁剪框的拖动与缩放增加canvas并裁剪图片保存图片到相册总结 在之前的博文中,已经介绍了如何使用在前端开发中,实现较方便自由的图片裁剪功能,可见博文: 如何一步步实现图片
2023-08-17

使用微信小程序实现图片拼接功能

标题:微信小程序实现图片拼接功能随着移动设备的普及和摄影爱好的兴起,人们对于图片处理的需求也越来越多。本文将介绍如何使用微信小程序来实现图片拼接功能,并提供具体的代码示例。一、技术准备在开始编写代码之前,我们需要准备以下技术:微信开发者工具
使用微信小程序实现图片拼接功能
2023-11-21

编程热搜

目录