小程序实现文件上传到oss

一,首先在微信开发者工具的设置中打开npm模块
二,在终端npm init初始化并使用npm install
三,点击开发者工具中的菜单栏:工具 --> 构建 npm
四,下载crypto-js和js-base64
五,在页面中引入

import crypto from 'crypto-js';
import { Base64 } from 'js-base64';

六,计算签名的方法,下面会用到

// 计算签名。
  computeSignature(accessKeySecret, canonicalString) {
    return crypto.enc.Base64.stringify(crypto.HmacSHA1(canonicalString, accessKeySecret));
  },

七,提交文件到oss后提交表单

          submit(){
          let that = this
          let params = {
      deviceMark: that.data.deviceMark,
      deviceSn: that.data.deviceMark,
      deviceName: that.data.deviceName,
      linkManId: that.data.linkManId,
      description: that.data.description,
      serTime: that.data.serTime,
    }
    let imageList = that.data.imageList
const date = new Date();
          date.setHours(date.getHours() + 1);
          const policyText = {
            expiration: date.toISOString(), // 设置policy过期时间。
            conditions: [
              // 限制上传大小。
              ["content-length-range", 0, 1024 * 1024 * 1024],
            ],
          };
          //临时stsToken
          wx.$get("web/oss/getStsInfo/").then(credentials => {
            const policy = Base64.encode(JSON.stringify(policyText))
            const signature = that.computeSignature(credentials.data.data.AccessKeySecret, policy)
            const formData = {
              OSSAccessKeyId: credentials.data.data.AccessKeyId,
              signature: signature,
              policy: policy,
              'x-oss-security-token': credentials.data.data.SecurityToken
            }
            let images = []
            for (let i = 0; i < imageList.length; i++) {
              //获取后缀
              let index = imageList[i].lastIndexOf(".");
              let ext = imageList[i].substr(index);
              let date1 = new Date()
              let random = parseInt(Math.random() * 1000)
              //修改文件名
              let fileName = "repair/images/" + date1.getTime() + random + ext
              //上传文件
              wx.uploadFile({
                url: 'https://xn-smart-platform.oss-cn-hangzhou.aliyuncs.com',
                filePath: imageList[i],
                name: 'file',
                formData: {
                  key: fileName,
                  policy: formData.policy,
                  OSSAccessKeyId: formData.OSSAccessKeyId,
                  signature: formData.signature,
                  'x-oss-security-token': formData['x-oss-security-token']
                },
                //调用成功的回调
                success(res) {
                //上传结束后吧表单提交给后端
                  if (res.errMsg === "uploadFile:ok") {
                    images.push(fileName)
                    //判断图片列表都上传了
                    if (images.length === imageList.length) {
                      params.images = images
                      wx.$post("web/repair/record/add/", params).then(res => {
                        if (res.success) {
                          wx.$msg("提交成功")
                          that.setData({
                            deviceMark: "",
                            deviceName: "",
                            linkMan: "",
                            linkManId: "",
                            description: "",
                            serTime: '',
                            imageList: []
                          })
                        } else {
                          wx.$msg(res.message)
                        }
                      })
                    }
                  }
                },
              })
            }
          })

}
          

结束啦,主要这里别忘记构建npm,启用npm模块,别的地方改一改复制就好啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值