小程序图片上传到七牛云

七牛云存储教程

一、申请七牛云

上七牛云官网注册登录,身份认证以后进入

点击新建存储空间 

安装步骤完成新建就可以了。

二、 后端生成token

我这里用的是node.js。

首先安装七牛云的依赖包

npm install qiniu --save

后台生成token

 

上图中的accessKey和secretKey在七牛云的   个人中心-》密匙管理中

其中accessKey -> AK   secretKey -> SK

buckey对应的是你的存储空间的名称

 

三、前端接收token发送请求获得图片的网络地址

先去官网下载七牛云的JS文件 下载地址

https://github.com/gpake/qiniu-wxapp-sdk#region 

在需要用到的页面中引入

 

addImg函数是调用微信小程序自带的chooseImage API获取图片的临时地址

      addImg(i) {
        let that = this;
        wx.chooseImage({
          count: 1,
          sizeType: ['original', 'compressed'],
          sourceType: ['album','camera'],
          success(res) {
            // tempFilePath可以作为img标签的src属性显示图片
            that.imgList[i].showImg = true

            that.imgList[i].tempFilePaths = res.tempFilePaths[0];
            that.$forceUpdate();
            that.getToken(res.tempFilePaths[0]);
          }
        })
      },

getToken函数是先发送http请求 从后台获取生成的token,然后再调用七牛云自带的upload去获得图片的网络地址

上图中domain的值在 

 

 uploadURL是你的对象存储空间的地区

小程序无法上传图片七牛云,可从七牛云配置和代码实现两方面排查解决。 ### 七牛云配置方面 - **注册与空间创建**:需完成七牛云注册,并创建新的存储空间。若未完成此步骤,小程序无法与七牛云建立有效的存储关联,导致无法上传图片。 - **域名问题**:七牛云自动分配的域名有效期仅30天,若要长久使用,需使用已备案的自己的域名。添加加速域名后,要到云服务器控制台进行域名解析。以腾讯云为例,若域名是img.xxx.xxx,主机记录就是img,需正确设置记录类型和记录值。域名配置错误或未备案,会使小程序无法找到有效的上传路径,造成上传失败 [^1]。 ### 代码实现方面 - **引入文件检查**:检查上传图片的js文件是否正确引入相关公共js。要确保正确引入如`const app = getApp()`、`const tools = require('../../utils/util')`(token获取方法所在文件)以及`var qiniuUpload = require('../../utils/qiniuUploader')`(七牛云上传必须js)。若文件引入错误或缺失,会导致相关上传功能无法正常调用 [^2]。 - **图片临时地址获取**:`addImg`函数用于调用微信小程序自带的`chooseImage` API获取图片的临时地址。若该函数调用失败,会使后续上传无有效的图片地址。要保证`wx.chooseImage`的参数设置正确,如`count`(选择图片数量)、`sizeType`(图片尺寸类型)、`sourceType`(图片来源类型)等 [^4]。 - **上传逻辑检查**:检查上传文件的逻辑代码,如`uploadFilePromise`函数。要确保`imgKey`(上传时作为后缀名)截取正确,`formData`中的`key`和`token`参数正确设置。`key`为拼接地址,`token`为从后端获取的有效token。若参数设置错误或token无效,七牛云服务器将拒绝接收上传请求 [^3]。 ### 示例代码 ```javascript // 引入相关文件 const app = getApp() const tools = require('../../utils/util') var qiniuUpload = require('../../utils/qiniuUploader') Page({ data: { imgList: [], }, addImg(i) { let that = this; wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success(res) { that.imgList[i].showImg = true that.imgList[i].tempFilePaths = res.tempFilePaths[0]; that.$forceUpdate(); that.getToken(res.tempFilePaths[0]); } }) }, async uploadFiles(lists, event) { let fileListLen = 0; for (let i = 0; i < lists.length; i++) { const result = await this.uploadFilePromise(lists[i].url) let item = this[`fileList${event.name}`][fileListLen] this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, { status: 'success', message: '', url: result })) fileListLen++ } }, uploadFilePromise(url) { const imgKey = url.split("tmp/")[1] return new Promise((resolve, reject) => { tools.formToken().then(res => { let a = wx.uploadFile({ url: 'https://up-z2.qiniup.com', filePath: url, name: 'file', formData: { 'key': imgKey, 'token': res.data, }, success: (res) => { setTimeout(() => { resolve(res.data.data) }, 1000) }, }); }) }) } }) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值