【自用笔记】小程序中使用七牛云上传图片

记录小程序使用七牛云上传图片详细步骤及遇到的坑 小程序七牛云上传文件代码封装 upload(){ var that = this; var state = 0; // 上传第几张图片 var imgList = []; // 保存图片数组 this.getUploadToken().then(res =>{ console.debug("res====",res) if (that.data.fileList.length < 9) { wx.chooseImage({ cou 阅读详情

因为我们之前使用的上传图片在上传比较大的图片时回显耗时很长,所以要求改用七牛云,根据领导给的参考和自己查的资料,做出来一个比较简单的可以满足需求。

首先需要进行准备工作:

内容参考这里(领导给的参考,因为部分准备工作已经做过了,所以我这里就直接从我自己做过的开始)↓

https://zhuanlan.zhihu.com/p/159399992

1.实名认证后,和后端配合,给你一个接口去调用获取到七牛token (这个token可以存储在app.globalData里,方便后面使用)

在这里你要选择自己的上传的地区,一共有五个,详情请自己在github上面去看,还是比较详细的,另外有一个domain的配置,是回显的时候用的,是自己公司的配置好的(开始我以为是配置我选择的那个区域的地址,后来找了很久,然后试了公司的链接后发现的,如果你在参考这篇笔记,还是需要自己试一下的)

2.接口可以调通后,去github上下载sdk文件包

软件开发工具包 - 七牛开发者中心这是参考里面给的链接,但是你可以直接从github上拉

gitHub链接:https://github.com/gpake/qiniu-wxapp-sdk#usage

git clone https://github.com/gpake/qiniu-wxapp-sdk.git

3.打开sdk包,把qiniuUploader.js导入你需要的小程序中,我放在了utils文件夹里,

4.剩下的就好说啦,这里封装了公共方法,借鉴的是:记录小程序使用七牛云上传图片详细步骤及遇到的坑 小程序七牛云上传文件代码封装_七牛云 小程序-优快云博客

目前这个场景是:点击按钮调用wx.chooseMedia,仅支持单张,没有做任何处理(大小压缩等):

//upload.js

const { getToken } = require("../api/getQiniuToken.js")    // 获取七牛云token接口
const qiniuUploader = require("./qiniuUploader.js"); // 引入七牛云js

const app = getApp(); // 获取应用实例


  /**
   * 初始化七牛相关参数
   * @param {*} res 拿到的七牛云token
   * @param {*} region 上传区域  ECN, SCN, NCN, NA, ASG,分别对应七牛的:华东,华南,华北,北美,新加坡 5 个区域
   * @param {*} uptoken 七牛云token
   * @param {*} domain  bucket 域名,下载资源时用到。如果设置,会在 success callback 的 res 参数加上可以直接使用的 ImageURL 字段。否则需要自己拼接。
   * @param {*} shouldUseQiniuFileName  qiniuShouldUseQiniuFileName 如果是 true,则文件的 key 由 qiniu 服务器分配(全局去重)。如果是 false,则文件的 key 使用微信自动生成的 filename。出于初代sdk用户升级后兼容问题的考虑,默认是 false。
   * 微信自动生成的 filename较长,导致fileURL较长。推荐使用{qiniuShouldUseQiniuFileName: true} + "通过fileURL下载文件时,自定义下载名" 的组合方式。
   * 自定义上传key 需要两个条件:1. 此处shouldUseQiniuFileName值为false。 2. 通过修改qiniuUploader.upload方法传入的options参数,可以进行自定义key
   */
  const initQiniu = (res) => {
    var options = {
      region: 'ECN', // 华东  
      uptoken: res,
      // uptokenURL: 'https://[yourserver.com]/api/uptoken',
      // uptoken: '',
      domain: '此处为自己公司配置的网址', 
      shouldUseQiniuFileName: false
    };
    qiniuUploader.init(options);
  }

/**
 * 获取token, getToken是自己封装的接口请求方法,然后使用promise异步返回结果
 */
const getUploadToken = () => {
  return new Promise((resolve,reject)=>{
    getToken().then(res =>{
      if(res.data.message) {
        app.globalData.uploadParams = res.data.message;//此处放在app globalData里是为了避免重复获取token,本次使用期间可以无需重复获取
        initQiniu(res.data.message)  //如果在uploadImg中配置,则不需要init
        resolve(res.data.message)
       }
    })
  })
}


/**
 * 上传七牛
 * @param {*} params 主要存储了上传到七牛云的区域及上面接口获取到的upToken值
 * @param {*} files 图片文件
 */
const uploadImg = (params,files) => {
  var state = 0;    // 上传第几张图片
  var imgList = []; // 保存图片数组
  // let fileList = files.map(item => item.url);  //若files是有url键的对象,则可map进去,但目前只考虑wx自带单张选择图片的情况
  let fileList = [];
  fileList.push(files)
  var uploadArr = fileList;        // chooseMedia上传成功的数组
  var uploadNum = fileList.length; // 上传数组的长度
  return new Promise((resolve, reject)=> {
      for (let i = 0; i < uploadNum; i++) {
          var random = Math.floor(Math.random() * 10000); //随机数
          qiniuUploader.upload(uploadArr[i], (res) => {
              // 以下注释内容是针对多张上传的图片做出处理,返回的是图片地址的数组
              // state++;
              // imgList.push(res.imageURL);
              // if (state == uploadNum) {
              //     resolve(imgList);
              // }
              resolve(res)
          }, (error) => {
              reject('error');
              console.log('error: ' + error);
              wx.hideLoading();
          }, 
          // 以下为option中的自行配置参数,由于在init时就已经配置,所以这里注释掉,但可选择不init,在这里配置参数,
          // {
          //     uploadURL: params.uploadURL, //上传到七牛的那个存储区域所对应的前缀地址,详见SDK中的区域图(如:"https://up.qiniup.com")。
          //     domain: 'qiniu.pudu.live',//CDN加速域名,无需修改 || 按照自己需求,配置的下载地址
          //     uptoken: params.uploadToken, //服务端接口获取的七牛token值,我们这边后台返回的字段名为uploadToken,需要换成你们的自定义字段哦
          //     region: 'ECN',//上传区域,共有五个,按需选择
          //     key: null, // 图片自定义名称  避免名称重复此处设置为null可以解决上传undefined file exists问题
          // }
          )
      }
  }) 
}
module.exports = {
  getUploadToken,
  uploadImg
}
//所需组件 .wxml
<text  bindtap="getQiNiuToken">选择图片</text>
<image src="{{imageObject.fileURL}}" mode="aspectFit"></image>



// 所需组件的 .js
import { uploadImg,getUploadToken } from "../../utils/upload"

data:{
    imageObject: {}, // 图片上传(从相册)返回对象。上传完成后,此属性被赋值
}

//上传图片
handleUpload(params,file,type){
  uploadImg(params,file).then((imgObj)=>{
    console.debug("上传成功 files",imgObj);
    this.setData({
      imageObject: imgObj
    })
  }).catch((error)=>{
    console.log("图片上传失败",error);
  })
},

  //选择图片 检查是否有七牛token
  getQiNiuToken() {
    let _this = this;
     // 置空messageFileObject,否则在第二次上传过程中,wxml界面会存留上次上传的信息
     _this.setData({
      imageObject: {},
      imageProgress: {}
  });
    wx.chooseMedia({
      count: 1, // 目前仅支持单张上传
      mediaType: ['image','video'],
      sourceType: ['album', 'camera'],
      maxDuration: 30,
      camera: 'back',
      success(res) {
        let filePath = res.tempFiles[0].tempFilePath;  //图片地址
        let uploadParams = app.globalData.uploadParams; //判断是否已经请求过上传token
        if(uploadParams) {
            _this.handleUpload(uploadParams,filePath)
        } else {
          getUploadToken().then((res)=>{  //globalData没有上传所需参数,先获取token再上传图片
            _this.handleUpload(res,filePath);
          })
        }
      }
    })
  },

这样就可以实现一个最简单的上传、回显,中间遇到很多不懂的也是边查边试出来的,很多逻辑都不懂,但是功能实现了,各位大佬有更好的可以留言指正。

Java实现将文件(图片)上传到七牛云对象存储,并实现下载和删除功能 Java实现将文件(图片)上传到七牛云对象存储,并实现下载和删除功能。在搭建项目时如果把上传的文件存储在该项目运行的主机上,会导致访问该项目时加载非常缓慢,因此需要对象存储。并且对象存储具有网站数据动静分离,大幅提升网页性能,储存节点多,支持跨地域实时同步,成本低,可节省服务器空间等优点。本文讲诉的是如何使用七牛云对象存储,用七牛云是因为七牛云送10G空间,对于小网站来说足够了。 阅读详情

相关推荐

Java后台+微信端,获取图片云链接

本节课,我讲的是微信小程序结合七牛云上传图片。仅仅讲如何上传图片并得到图片的云链接。 首先,先到官网,https://developer.qiniu.com/kodo/manual/1205/programming-model 了解一下大致的业务流程, 业务流程 客户端在上传资源到七牛云存储之前要先从业务服务器获取一个有效的上传凭证,因此需要先后和两个服务端打交道。 由此图可知,...

府城的博客 2301

微信小程序七牛云 图片(文件)上传预览

具体实现过程是先获取到公司后台生成的 token 再使用uni-app的api获取到图片地址 本地保存一份图片本地地址 然后调用qiniuUploader.upload 上传图片 吧token 等参数带进去 上传完成后 (我这里是直接拼接地址得到上传后的图片地址)得到地址。由于本地页面响应速度比服务器反应快所以 创建一个数组 来存放本地图片地址。最近在公司对接了一个文件上传到七牛云的项目。这里用到了两个uni-app的方法。...

qq_44766377的博客 1715

微信小程序 上传图片到七牛云 支持多张

封装七牛云上传方法 qiniuUploader.js (function () { var config = { qiniuRegion: '', qiniuImageURLPrefix: '', qiniuUploadToken: '', qiniuUploadTokenURL: '', qiniuUploadTokenFunction: null...

愿你走过半生,归来任是少年。 2395

微信小程序上传文件或图片(包含base64)至七牛云

微信小程序上传图片或文件至七牛云 node上传七牛云

今晚吃火锅的博客 2644

前端(Vue)上传图片到七牛云与后端(Django)上传图片到七牛云

前端(Vue)上传图片到七牛云与后端(Django)上传图片到七牛云 文章目录前端(Vue)上传图片到七牛云与后端(Django)上传图片到七牛云Vue上传图片到七牛云Django上传图片到七牛云 在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处采用七牛云进行图片存储。 经过测试,通过七牛云获取图片确实比直接通过自己的服务器获取的速度要快得多,赶快去注册七牛云吧。 上传方式 上传图片的方式有两种: 1 .通过服务器:

weixin_47073925的博客 1351

记录rk3588 在Linux 6.1内核版本声卡 bug。

rk3588 Audio bug

Yongheng6的博客 856

上传图片到七牛云并返回图片URL

在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处我们采用七牛云进行图片存储。 一.七牛云准备工作 1.七牛云注册登录 https://portal.qiniu.com/signup/choice 2.新建存储空间 进入对象存储菜单,点击“新建存储空间”,这里需要实名认证,上传身份证正反...

盛夏温暖流年 3万+

PTA编程—币值转换

我对于这个题的主要思想就是把九位数分三块,对每块进行处理后,再合并。有了这个思想就开始写代码,后面就是哪有洞补哪,哪个测试用例没通过就对其特殊处理…。反正最后测试用例全通过了。 #include<iostream> #include <string> #include <algorithm> using namespace std; char a[10]={'a','b','c','d','e','f','g','h','i','j'}; //既然题目说了最多9位

uyo9ko的博客 991

前端使用ElementUI上传图片到七牛云服务器

ElementUI upload组件:http://element-cn.eleme.io/#/zh-CN/component/upload 0. 目的 我们的目的是通过使用ElementUI的 upload 组件上传图片到七牛云 存储对象 上,之后拿到该图片在存储对象上的 url地址 1. ElementUI官方文档示例 <el-upload class="upload-demo...

u012925833的博客 4783

RK3566/RK3588 NPU性能实测:用mobilenet模型快速验证你的开发板NPU是否正常工作

本文提供了RK3566/RK3588开发板NPU性能实测指南,通过MobileNet模型快速验证NPU是否正常工作。详细介绍了环境搭建、测试资源获取、编译运行及结果分析的全流程,帮助开发者高效验证神经网络加速器功能,为后续AI应用部署奠定基础。

weixin_28826521的博客 450

Plecs仿真进阶:半桥LLC谐振变换器从开环到闭环的实战解析

本文通过Plecs软件,详细解析了半桥LLC谐振变换器从开环模型搭建到闭环控制实现的完整仿真流程。文章深入探讨了谐振参数设置、关键波形解读,并重点分享了基于PI控制器的闭环调试实战经验与参数整定技巧,帮助工程师高效掌握这一高效拓扑的仿真与设计方法。

weixin_29231263的博客 283

微信小程序上传图片到七牛云

七牛云上传图片 第一次用七牛云,目的是存储一些图片 1.首先是七牛云的注册,很简单。 2.注册完创建新的空间 3.这时候会自动分配给你一个域名,但是有效期是30天。 4.若要长久使用,最好用自己的域名,域名要先备案 5.添加加速域名,我用的是二级域名,然后到云服务器控制台进行域名解析,我的是腾讯云 比如我的域名是img.xxx.xxx,那么主机记录就是img,记录类型就是上面那个,记录值是...

weixin_43582851的博客 4717

Python爬虫抓取学术期刊数据(Springer、Elsevier)

本文详细介绍了如何使用Python爬虫抓取学术期刊网站(如Springer、Elsevier)上的文章信息,并进行数据清洗和存储。我们使用了requestsSeleniumpandas等技术,通过模拟浏览器行为来绕过反爬虫机制,并将数据保存为Excel文件,方便后续分析。未来,我们可以通过加入更多的期刊网站数据源,扩展爬虫的功能,抓取更多的学术数据。同时,结合自然语言处理(NLP)技术,可以对抓取的文章进行自动化的摘要提取和主题分类,为学术研究提供更多的支持。

2201_76125261的博客 1488

小程序上传图片到七牛云

小程序直传图片到七牛云 一、创建七牛云账号,获取ak、sk,创建对象存储空间名称 二、服务端接口获取七牛token值,个人使用的php编写的后端代码 1、小程序获取token接口调用,该方法我这里写在了utils文件夹里的util.js文件中,所以下文中上传图片引用的时候会用到对应的文件目录,该方法我在界面初始化监听的时候调用并写入了缓存方便后期使用,可根据自身需求更改token存储方式,代码如下: //获取七牛token ...

失忆蝴蝶 1642

YOLOv8改进策略【损失函数篇】| 替换Powerful-IoU(PIoU),增强对中等质量锚框的关注力,引导锚框更直接、高效地回归

现有基于IoU的损失函数存在不合理的惩罚因子,导致锚框在回归过程中出现面积扩大的问题,使得回归效率降低、收敛速度变慢。同时,这些损失函数在反映锚框与目标框之间的差异、考虑目标框大小以及某些情况下的性能表现等方面存在局限性。在目标检测任务中,边界框回归的损失函数对检测性能至关重要。Powerful-IoU(PIoU)及其升级版PIoU v2正是为解决现有损失函数存在的问题而设计的。本文利用PIoU改进YOLOv8的损失函数,提高模型精度。

Limiiiing的博客 673

一文掌握 Playwright 的详细使用

Playwright 是一个功能强大的浏览器自动化工具,适用于网页自动化测试、数据抓取和网页交互。通过掌握其基础用法和高级功能,你可以轻松实现各种浏览器自动化任务。Playwright 支持多浏览器、多语言,并且具有高效的异步操作能力,是现代浏览器自动化的首选工具之一。

数据知道的博客 1万+

上传图片到七牛云

本文介绍后端如何将图片上传到七牛云 预热准备 1)首先打开七牛云的官网 七牛云 2)注册一个人账号(新用户有优惠,具体可以查看官网通讯) 3)进入个人控制台,打开【对象存储】->【空间管理】,然后我们新建一个空间(注意:这时需要实名认证,很快会审核通过) 4)点进去,可以看到文件管理,这时我们就可以上传文件之类的 正文 使用maven 工程,可直接引入pom依赖,否之需下载对应sdk...

Cbuc丶的博客 2596

tsfknn 预测R语言中的时间序列

rolling参数应该设置为FALSE,这使得最后的18个观测值成为测试集,其余的作为训练集;如果我们将rolling参数设置为默认值TRUE,那么测试集就不会是一个恒定的向量。lag 滞后参数表示时间序列数据的滞后值。在这个例子中,由于我们的时间序列数据是月度的,我们将参数设置为1:12。作为药品福利计划的一部分,澳大利亚健康保险委员会记录的属于ATC代码A10的产品的每月政府支出(百万美元)。我们将使用tsfknn包,它可以用来预测R语言中的时间序列。格式:ts类别的月度时间序列。

Mrrunsen的博客 325

七牛云图片上传

七牛云上传图片并返回图片Url 在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处我们采用七牛云进行图片存储。 一.七牛云准备工作 1.七牛云注册登录 七牛云官网 传送门 2.新建存储空间 进入对象存储菜单,点击“新建存储空间”,这里需要实名认证,上传身份证正反面之类的,大概一个小时左右就认证成功了 ...

adsdaas的博客 3650

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用七牛云进行上传图片

七牛云和fileinput的协同工作

Wolf__king的博客 2678

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

微信小程序上传图片、视频到七牛云存储

我们采用的是js上传的方式,直接将文件上传到七牛云,并且上传之后,七牛云会返回文件名称和文件全路径。 思路: 1:配置七牛云上传所需信息,包括七牛云存储空间绑定的加速域名,七牛云空间所在地域的上传url地址,存储空间地域region代号等 我的是把信息放在了app.js的globalData中,如下图: 根据自己的需求把相关信息配置一下,也可以在站点上配置,使用请求接口的方式,获取站点后台的配置信息后,对相关信息进行赋值。 2:在需要使用七牛云上传的小程序js页面,引入七牛云上传基础库。

salestina的博客 2604

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

java七牛云上传图片并返回URL(史上全面详解)

文章目录前言一、注册七牛云账号二、代码部分1.导入依赖包2.接口调用总结(一)准备七牛云账号 前言 最近在开发一个小程序项目,其中会有设计到用户发布图片的功能,思来想去 还是准备用七牛云来对图片进行管理。OK 话不多说,经过我自己成功上传 ,现在将整体的上传流程梳理后分享给大家,少踩一些坑。 一、注册七牛云账号 1.1 七牛云注册地址:https://portal.qiniu.com/signup/choice 1.2 新建一个存储空间(注意:空间名后续会使用到) 二、代码部分 1.导入依赖包

z583248756的博客 7553

七牛云 上传图片到七牛云并返回图片URL

七牛云 上传图片到七牛云并返回图片URL 鸣谢'追逐盛夏流年':https://blog.youkuaiyun.com/j1231230/article/details/80061834 1 在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处我们采用七牛云进行图片存储。 一.七牛云准备工作 1.七牛云注册登录 ...

七天不过夜的专栏 2408

java实现七牛云图片文件的上传

java实现七牛云图片文件的上传 七牛云:https://portal.qiniu.com/create#resource 首先需要去注册一个账号实现实名认证 之后打开七牛云的 我们需要先创建一个储存空间来给我们使用 这里的key也需要记录下来我们等会也会用的到 需要用到的参数: 1、AccessKey (在“个人中心”–>“秘钥管理”中) 2、SecretKey (在“个人中...

坚持去坚持。 4727

springboot整合七牛云实现图片上传

之前有在springboot上用过七牛云实现图片上传,今天因为某些原因又重新使用了下七牛云因此想总结下七牛云 详细步骤 1.申请七牛云账号并实名认证 2.申请存储空间 完善存储空间名并选择地区 3.springboot整合七牛云实现图片上传 1.导入maven依赖 <!-- 七牛云 --> <dependency> ...

kevin的博客 8252
上一篇: 【自用笔记】vant中list组件和pullRefresh组件
下一篇: 【自用笔记】小程序 图片url和base64互转,延伸canvas压缩
林希雨
博客等级 码龄4年 84粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值