小程序在上传图片时,需要获取相册图片或者相机拍照(choosemedia),得到数据后会在使用端建立一个缓存路径,获取到缓存路径以后,使用wx.uploadfile上传,如果按照正常的步骤进行,uploadfile函数将会在choosemedia返回的success中运行,而获取的fileID又在succe中赋值,但是由于js语言本身的回调能力弱,因此会产生回调地狱,因此无法对path赋值。(代码如下)

// pages/others/others.js
Page({data:{path:''},upfile:function(e){wx.chooseMedia({count: 1,mediaType: ['image','video'],sourceType: ['album', 'camera'],maxDuration: 30,camera: 'back',success(res) {console.log(res.tempFiles[0].tempFilePath)//缓存路径wx.cloud.uploadFile({cloudPath: 'img/'+Math.random()*100000+'.jpg',filePath: 'res.tempFiles[0].tempFilePath', // 文件路径success: res => {// get resource IDconsole.log(res.fileID)this.setdata({path:res.fileID})},fail: err => {// handle error}})}})},})

后面在一篇文章上看到解决办法,使用js异步函数解决,它的原理是创建多线程,不像上面的代码是单向的。

代码如下:

async getimg() {// 1.选择一张本地的照片const imageRes = await wx.chooseMedia({       //定义选择图片的返回值count:1,mediaType:['image'],sourceType:['album'],})console.log(imageRes);                        //返回的缓存参数// 2.获取图片缓存路径const imagePath = imageRes.tempFiles[0].tempFilePath// 3,上传到云存储// 动态生成名称的操作const timestamp = new Date().getTime() // 获取时间戳保证图片名称唯一const openid = "open_xx " // 获取openid防止同一时间, 不同的人上传了相同名称const extension = imagePath.split(".").pop()const imageName = `${timestamp}_${openid}.${extension}`// 调用API上传图片const uploadRes = await wx.cloud.uploadFile({filePath: imagePath,                        //使用上面获取到的缓存路径cloudPath: '跑步记录提交/'+imageName        // 默认上传到云端根目录})console.log(uploadRes);this.setData({path:uploadRes.fileID                   //获取fileID并赋值给path,方便存入数据库})console.log("网盘路径",uploadRes.fileID)},

注意,如果要上传多张图片,需要在获取图片缓存路径以后加循环,缓存路径为imageRes.tempFiles[i].tempFilePath

转载自:学全栈的灌汤包作品

小程序实现图片上传,并获取fileID存入数据库相关推荐

  1. php微信小程序多图上传,tp5实现微信小程序多图片上传到服务器功能

    最近在做一个教育类的小商城的微信小程序,用到了上传多个图片文件到服务器端,这里做一个讲解,希望对大家有所帮助. 1,小程序端: 在wxml文件中: 删除 点击上传作业 在js文件中: Page({ / ...

  2. uniapp 微信小程序开发 图片上传压缩

    uniapp 微信小程序开发 图片上传压缩 安卓上传图片并压缩 思路 全部代码 安卓上传图片并压缩 由于后端接口对图片的大小有限制,所以在上传图片是需要压缩处理: uni.chooseImage({c ...

  3. 微信小程序 多图片上传 支持预览 删除 设置数量上限

    github地址: https://github.com/Volcano-Yang/miniprogram-picture-upload Miniprogram-Picture-Upload 努力帮助 ...

  4. 微信小程序之图片上传、多图上传、头像上传、头像获取、图片上传失败问题解决

    小程序用户授权获取用户头像,需点击才可以让用户选择是否授权. 图片上传失败问题解决 图片上传 一定要记得修改合法域名,不然会失败,而且找不到报错信息哟!并且域名采用 https 点击,用户授权,获取用 ...

  5. 【小程序开发原创】小程序裁剪图片上传头像,二维码源码

    微信小程序 图片裁剪工具,简单易用 项目需求 在做微信小程序的时候有个图片上传之前裁剪的需求,找过一些github中的项目,都不太理想,主要是没有办法自定义宽高,于是自己研究了一下,做了一个简单的图片 ...

  6. 微信小程序 删除服务器图片,微信小程序实现图片上传放大预览删除代码

    本文实例为大家分享了微信小程序图片上传放大预览的具体代码,供大家参考,具体内容如下 image.js代码: = 9) { this.setData({ lenMore: 1 }); setTimeou ...

  7. 小程序的图片上传和显示

    在商城的发布页面,我们需要上传图片,存在云端,再显示在商品页面,可以参考这篇文章https://blog.csdn.net/Cheny_Yang/article/details/89033021 1. ...

  8. 微信小程序多图片上传全栈实战

    本篇教程技术栈:springBoot(Java后端)+  微信小程序.完整的图片上传教程. 页面截图,点击图片右上角按钮可以删除图片. 1.图片上传需要使用wx.uploadFile(Object o ...

  9. 【微信小程序】图片上传组件“mp-uploader“(weui)

    使用示例   wxml <mp-uploader files="{{files}}" max-count="{{maximgs}}" max-size=& ...

最新文章

  1. django mysql 时区_django 中的时区设置
  2. 想成为优秀的管理者,不能不知道的决策方法
  3. 神策数据易向文:打造券商上层数据应用的坚实基础
  4. d3.js学习笔记--Mike Bostock: Thinking with Joins
  5. react-native init MyProject之后发生了什么
  6. vscode 支持 markdown 流程图
  7. java map大小_Java中HashMap的size()方法: HashMap.size() - Break易站
  8. 第十届蓝桥杯大赛青少年创意编程C++组省赛 第2题 小猫吃鱼
  9. 美国对特斯拉“幽灵刹车”问题展开调查 涉及41.6万辆Model 3/Y
  10. linux下安装指定版本的nodejs(升级到指定版本)
  11. matlb:图像的几何矩,中心矩,Hu不变矩(含代码)
  12. 投资银行业务法规汇编----仅供学习
  13. ServerGuide U盘安装Windows Server 2008 R2安装
  14. 阿里云邮箱企业版和个人免费版之间的区别
  15. ReentrantLock 源码简单分析
  16. [Java]-单例模式与volatile简介
  17. 结婚5年又发现了一场爱情 感人
  18. ML01 -- KNN算法
  19. 测试工具开发手把手教程
  20. 项目初期如何确定项目的进度计划和资源需求?

热门文章

  1. linux 命令 -history 查看历史执行过的命令
  2. python 学习分享之简单的播放音乐1(playsound)
  3. 最小割与最大流(mincut maxflow)
  4. Html与css步入新手村
  5. 真正从零开始,TensorFlow详细安装入门图文教程!(linux)
  6. 数据库-等值连接与自然连接的区别
  7. 一劳永逸的解决jquery的本地引入的方法
  8. 关于java实体类和mysql数据库json格式的对应问题,使用mybatis-plus
  9. 周鸿祎方法论:吊丝如何逆转未来
  10. Python的namedtuple使用详解