微信小程序实现一张或多张图片上传(云开发)


Posted in Javascript onSeptember 25, 2019

一、简介:

这篇文章向大家展示的是把图片上传到云数据库中,这是我做商城项目时研究的。大家都知道,云开发是没有后端开发的,所有图片我们要放到云数据库中。

二、素材图:

微信小程序实现一张或多张图片上传(云开发)

三、效果图:

微信小程序实现一张或多张图片上传(云开发)

微信小程序实现一张或多张图片上传(云开发)

四、代码:

wxml:

<!--miniprogram/pages/fb/fb.wxml-->
<view class='pages'>
 <view class='top'><text class='top_name'>商品图片:</text></view>
 <!-- 图片 -->
 <view class="images_box">
  <block wx:key="imgbox" wx:for="{{imgbox}}">
   <view class='img-box'>
    <image class='img' src='{{item}}'></image>
    <view class='img-delect' data-deindex='{{index}}' bindtap='imgDelete1'>
     <image class='img' src='../../images/delect.png'></image>  
    </view>
   </view>
  </block>
  <view class='img-box' bindtap='addPic1' wx:if="{{imgbox.length<9}}">
   <image class='img' src='../../images/add_image.png'></image>  
  </view>
 </view>
 <button bindtap='fb'>上传图片</button>
</view>

wxss:

/* miniprogram/pages/fb/fb.wxss */
page{
 background-color: rgba(200, 198, 201, 0.527);
}
.pages{
 width: 98%;
 margin: auto;
 overflow: hidden;
}
.top{
 width: 100%;
 overflow: hidden;
 margin: auto;
 font-size: 50rpx;
 background-color: white;
 border-left: 8rpx solid rgb(9, 245, 60);
 border-bottom: 1rpx solid rgba(117, 116, 116, 0.527);
}
.top_name{
 margin-left: 20rpx;
}
/* 图片 */
.images_box{
 width: 100%;
 display: flex;
 flex-direction: row;
 flex-wrap: wrap;
 justify-content: flex-start;
 background-color: white;
}
.img-box{
 border: 5rpx;
 border-style: solid;
 border-color: rgba(0, 0, 0, 0.452);
 width: 200rpx;
 height: 200rpx;
 margin-left: 35rpx;
 margin-top: 20rpx;
 margin-bottom: 20rpx;
 position: relative;
}
/* 删除图片 */
.img-delect{
 width:50rpx;
 height:50rpx;
 border-radius:50%;
 position:absolute;
 right:-20rpx;
 top:-20rpx;
}
.img{
 width: 100%;
 height: 100%;
}
.jiage{
 height: 60rpx;
 width: 90%;
 margin-left: 5%;
 margin-right: 5%;
 background-color: white;
 display: flex;
 justify-content: flex-start;
}
.rmb{
 width: 280rpx;
 border: 2rpx solid rgb(199, 197, 197);
}
button{
 margin-top: 20rpx;
 background-color: green;
}
.radio-group{
 display: flex;
}

js:

// pages/fb/fb.js
const app = getApp()
const db = wx.cloud.database();//初始化数据库
Page({
 /**
  * 页面的初始数据
  */
 data: {
  imgbox: [],//选择图片
  fileIDs: [],//上传云存储后的返回值
 },

 // 删除照片 &&
 imgDelete1: function (e) {
  let that = this;
  let index = e.currentTarget.dataset.deindex;
  let imgbox = this.data.imgbox;
  imgbox.splice(index, 1)
  that.setData({
   imgbox: imgbox
  });
 },
 // 选择图片 &&&
 addPic1: function (e) {
  var imgbox = this.data.imgbox;
  console.log(imgbox)
  var that = this;
  var n = 5;
  if (5 > imgbox.length > 0) {
   n = 5 - imgbox.length;
  } else if (imgbox.length == 5) {
   n = 1;
  }
  wx.chooseImage({
   count: n, // 默认9,设置图片张数
   sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
   sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
   success: function (res) {
    // console.log(res.tempFilePaths)
    // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
    var tempFilePaths = res.tempFilePaths

    if (imgbox.length == 0) {
     imgbox = tempFilePaths
    } else if (5 > imgbox.length) {
     imgbox = imgbox.concat(tempFilePaths);
    }
    that.setData({
     imgbox: imgbox
    });
   }
  })
 },

 //图片
 imgbox: function (e) {
  this.setData({
   imgbox: e.detail.value
  })
 },


 //发布按钮
 fb: function (e) {
  if (!this.data.imgbox.length) {
   wx.showToast({
    icon: 'none',
    title: '图片类容为空'
   });
  } else {
    //上传图片到云存储
    wx.showLoading({
     title: '上传中',
    })
    let promiseArr = [];
    for (let i = 0; i < this.data.imgbox.length; i++) {
     promiseArr.push(new Promise((reslove, reject) => {
      let item = this.data.imgbox[i];
      let suffix = /\.\w+$/.exec(item)[0];//正则表达式返回文件的扩展名
      wx.cloud.uploadFile({
       cloudPath: new Date().getTime() + suffix, // 上传至云端的路径
       filePath: item, // 小程序临时文件路径
       success: res => {
        this.setData({
         fileIDs: this.data.fileIDs.concat(res.fileID)
        });
        console.log(res.fileID)//输出上传后图片的返回地址
        reslove();
        wx.hideLoading();
        wx.showToast({
         title: "上传成功",
        })
       },
       fail: res=>{
        wx.hideLoading();
        wx.showToast({
         title: "上传失败",
        })
       }

      })
     }));
    }
    Promise.all(promiseArr).then(res => {//等数组都做完后做then方法
     console.log("图片上传完成后再执行")
     this.setData({
      imgbox:[]
     })
    })

   }
 },

})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
Javascript将string类型转换int类型
Dec 09 Javascript
基于jquery的监控数据是否发生改变
Apr 11 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
Jul 04 Javascript
用javascript将数据导入Excel示例代码
Sep 10 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
CodeMirror js代码加亮使用总结
Mar 25 Javascript
详解Angular调试技巧之报错404(not found)
Jan 31 Javascript
浅谈ng-zorro使用心得
Dec 03 Javascript
JS代码检查工具ESLint介绍与使用方法
Feb 04 Javascript
JS继承定义与使用方法简单示例
Feb 19 Javascript
vue组件实现移动端九宫格转盘抽奖
Oct 16 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
Sep 25 #Javascript
layer 关闭指定弹出层的例子
Sep 25 #Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
Sep 25 #Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
Sep 25 #Javascript
Vue 实现一个命令式弹窗组件功能
Sep 25 #Javascript
layui prompt 设置允许空白提交的方法
Sep 24 #Javascript
微信小程序制作扭蛋机代码实例
Sep 24 #Javascript
You might like
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
PHP实现获取图片颜色值的方法
2014/07/11 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
javascript基于jQuery的表格悬停变色/恢复,表格点击变色/恢复,点击行选Checkbox
2008/08/05 Javascript
javascript两段代码,两个小技巧
2010/02/04 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
详解Python迭代和迭代器
2016/03/28 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
基于Pytorch SSD模型分析
2020/02/18 Python
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
上海奥佳笔试题面试题
2016/11/16 面试题
Order by的几种用法
2013/06/16 面试题
听课评语大全
2014/04/30 职场文书
服装发布会策划方案
2014/05/22 职场文书
关于环保的标语
2014/06/13 职场文书
领导党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
大学生先进个人主要事迹材料
2015/11/04 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
Python中的tkinter库简单案例详解
2022/01/22 Python
分享3个非常实用的 Python 模块
2022/03/03 Python
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android