小程序云开发 上传图片到云存储

news/2024/7/20 3:01:47 标签: 小程序, 微信小程序

在学习了小程序云开发后,遇到了开发中常见的图片上传,今天简单的记录总结下在云开发中如何实现图片上传到云存储中。

在这里简单的分了两种情况,一种是选择图片后直接上传到云存储中,像替换头像之类的就是符合这种情况。第二种是选择图片后,点击提交按钮再上传到云存储中,就像朋友圈发布或表单中添加图片的一样 点击发布按钮才可以上传。

接下来我们先看第一种情况,选择图片直接上传到云存储中:

效果如下:

 代码:

<view>
         
  <image src="{{images}}"></image>
           
</view>
<view bindtap="upload">上传</view>
upload(){
    let that=this;
    wx.chooseImage({//异步方法
      count: 9,//最多选择图片数量
      sizeType:['original', 'compressed'],//选择的图片尺寸 原图,压缩图
      sourceType:['album','camera'],//相册选图,相机拍照
      success(res){
        //tempFilePaths可以作为图片标签src属性
        const tempFilePaths = res.tempFilePaths
         console.log("选择成功",res)

         for(let i=0; i < tempFilePaths.length; i++){//多个图片的循环上传
          wx.cloud.uploadFile({//上传至微信云存储
            cloudPath:'myImage/' + new Date().getTime() + "_" +  Math.floor(Math.random()*1000) + ".jpg",//使用时间戳加随机数作为上传至云端的图片名称
            filePath:tempFilePaths[i],// 本地文件路径
            success: res => {
              // 返回文件 ID
              console.log("上传成功",res.fileID)
              that.setData({
                images:res.fileID//获取上传云端的图片在页面上显示
              })
              wx.showToast({
                title: '上传成功',
              })
            }
          })
        }

      }
    })
  },

上传后,点击云存储面板刷新就能看到新上传的图片

 接下来我们看下第二种情况,当选择图片后,点击提交按钮再上传到云存储中。

效果图如下:

 

 代码如下:

<form action="" bindsubmit="addBtn">
<view>
      
   <view class="imgFlex">
     <block wx:for="{{images}}" wx:key="*this" >
        <view data-index="{{index}}" class="item_img">
          <image src="{{item}}"></image>
        </view>
      </block>
    </view>
    <view bindtap="upload">上传</view>
</view>
 <button type="primary" form-type="submit">提交</button>
 <button type="primary" form-type="reset">重置</button>
</form>
//index.js
//import WxValidate from '../../utils/WxValidate';
const app = getApp()
const db = wx.cloud.database()//调用默认云环境的数据库引用
Page({
  data: {
    images:[],//选择图片
    images_success: [],//上传云存储后的云存储地址数组
    images_success_size:0,//图片上传成功的数量
  },
  onLoad(){
  
},
 
  upload(){
    let that=this;
    wx.chooseImage({//异步方法
      count: 9,//最多选择图片数量
      sizeType:['original', 'compressed'],//选择的图片尺寸 原图,压缩图
      sourceType:['album','camera'],//相册选图,相机拍照
      success(res){
        //const tempFilePaths = res.tempFilePaths
        that.setData({
          images: res.tempFilePaths
         });
         console.log("选择成功",res)
      }
    })
  },
  
  uploadImage(index){
    let that=this
      wx.cloud.uploadFile({//上传至微信云存储
        cloudPath:'myImage/' + new Date().getTime() + "_" +  Math.floor(Math.random()*1000) + ".jpg",//使用时间戳加随机数给图片命名
        filePath:that.data.images[index],// 本地文件路径
        success: res => {
          // 返回文件 ID
          console.log("上传成功",res.fileID)
          that.data.images_success[index] = res.fileID;
          that.data.images_success_size = that.data.images_success_size+1;

          if(that.data.images_success_size == that.data.images.length){
            console.log("上传成功:", that.data.images_success)
          } else {
            that.uploadImage(index+1)
          }
        },
        fail: err =>{
          that.setData({
            images_success:[],
            images_success_size:0
          })
          wx.showToast({
            icon:'none',
            title: '上传失败,请重新上传',
          })
        }
      })

  },
 
 //提交表单添加到数据库
 addBtn: function(e){
  let that=this;
  if(that.data.images.length > 0){//1、判断是否有图片
    that.setData({
      //3、给上传图片初始化一个长度,上传成功的数组和已有的数组一致
      images_success:that.data.images
    })
    that.uploadImage(0)//2、有图片时先上传第一张
    }
   
    
 },
  
})

以上就是关于小程序 图片上传到云存储中的代码,代码中都有写注释,这里就不多做解释了,实践第一。第一次尝试写的,欢迎同学们点评😜

 


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

相关文章

使用Jenkins进行android项目的自动构建(6)

之前已经介绍过使用Maven做构建&#xff0c;在来介绍一下Gralde的自动化构建。 什么是Gralde&#xff1f;官方的解释是 Gradle is an open source build automation system. Gradle can automate the building, testing, publishing, deployment and more of software packages…

微信小程序获取年月日周及早上、中午、晚上

好久没写笔记了&#xff0c;今天简单的记录下在开发小程序时&#xff0c;遇到了页面获取当前时间和时间段&#xff0c;记录总结以下。 首先我们在utils文件 中新建一个js文件&#xff0c;然后把当前时间和时间段的代码写在这个文件中。代码就如下&#xff1a; function forma…

2015年3月苹果新的审核标准(PDF)

http://pan.baidu.com/s/1mgMJNss 自己下载吧 转载于:https://www.cnblogs.com/zgfblog/p/4330529.html

深入了解java集合_java集合入门和深入学习,看这篇就差不多了

一、集合入门总结集合框架&#xff1a;Java中的集合框架大类可分为Collection和Map&#xff1b;两者的区别&#xff1a;1、Collection是单列集合&#xff1b;Map是双列集合2、Collection中只有Set系列要求元素唯一&#xff1b;Map中键需要唯一&#xff0c;值可以重复3、Collect…

小程序editor富文本编辑使用及rich-text解析富文本

今天尝试了下在小程序中使用editor富文本编辑&#xff0c;然后再详情页使用rich-text来解析富文本html。 首先先下载editor组件&#xff0c;并放到项目目录中&#xff0c;&#xff08;组件下载地址&#xff09; 文件存放后&#xff0c;打开richText.wxml可以根据需求修改代码&…

标准模板库(STL)

一.STL 广义&#xff1a;包括算法&#xff0c;容器&#xff0c;迭代器 STL六大组件&#xff1a;容器&#xff0c;算法&#xff0c;迭代器&#xff0c;仿函数&#xff0c;适配器&#xff0c;空间配置器。 容器&#xff1a;类模板 > 各种各样的数据结构&#xff1a;数组&…

想要开发好的软件,必须学会这几项!

随着互联网的普及&#xff0c;开发人员数量越来越多&#xff0c;网站开发人员、移动APP开发人员等&#xff0c;也许这个数量还会增加。那么作为一个开发人员&#xff0c;如何开发出好的作品呢&#xff1f;需要注意些什么呢&#xff1f;作为一名新时代的开发者&#xff0c;你必须…

java编译点九图_【Android】点9图,点九图

第六节视频的内容&#xff0c;真正做起来才发现自己一点都不了解这个点9图。概述官网截的&#xff1a;A NinePatchDrawablegraphic is a stretchable bitmap image, which Android will automatically resize to accommodate the contents of the View in which you have place…