1. 首页

golang阿里云sts小程序直传到阿里云OSS

写商城的时候,后端把原来的后端图片->服务器->oss改成了

后端图片直传oss,再把图片地址存进服务器,准备把前端也改成这样的

网上找到的一些代码不是很齐全,这里自己改了一下后,就分享出来了,返回给前端的sts数据格式如下:

accessKeyId: "STS.NTC****************6YMEEzhtnK7V"
accessKeySecret: "3K77rcLct*******************GepepY5fhazYwEW"
bucket: "h*****p"
region: "oss-cn-beijing"
stsToken: "CAIS7wF1q6Ft5B2y*****************6ctDz2IHpOeHlgBe4bsfo0lW5R6/8dlq53TJl"

前端小程序上传的封装

核心的封闭代码如下,

const uploadFile = function (filePath, dir,stsinfo, successc, failc) {
  if (!filePath || filePath.length < 9) {
    wx.showModal({
      title: '图片错误',
      content: '请重试',
      showCancel: false,
    })
    return;
  }
	let suffix = filePath.split('.').pop().toLowerCase();
  //图片名字 可以自行定义,     这里是采用当前的时间戳 + 150内的随机数来给图片命名的
  let filename = dir + new Date().getTime() + Math.floor(Math.random() * 150) + '.'+suffix;
  let aliyunServerURL = "https://"+stsinfo.bucket+"."+stsinfo.region+".aliyuncs.com";//OSS地址,需要https
  let accessid = stsinfo.accessKeyId;
  let policyBase64 = getPolicyBase64();
  let signature = getSignature(policyBase64,stsinfo);//获取签名
 
  uni.uploadFile({
    url: aliyunServerURL,//开发者服务器 url
    filePath: filePath,//要上传文件资源的路径
    name: 'file',//必须填file
    formData: {
      'key': filename,
      'policy': policyBase64,
      'OSSAccessKeyId': accessid,
      'signature': signature,
			 'x-oss-security-token': stsinfo.stsToken,
      'success_action_status': '200',
    },
    success: function (res) {
      if (res.statusCode != 200) {
        failc(new Error('上传错误:' + JSON.stringify(res)))
        return;
      }
       successc(aliyunServerURL+"/"+filename);
    },
    fail: function (err) {
      err.wxaddinfo = aliyunServerURL;
      failc(err);
    },
  })
}

完整代码可以进入阿里云sts小程序上传封装gitee

里面也有比较详细的介绍 

本文来自投稿,不代表本人立场,如若转载,请注明出处;如有问题您可以发邮件到:itlun@qq.com