小程序直传图片到阿里oss

参考阿里官方文档

流程:
1:下载web直传demo代码,上传图片获取signature,policy
2:通过小程序上传接口,上传图片(wx.chooseImage获取本地临时文件路径)

/**
 * 上传文件到阿里oss
 * file: 文件名
 * dir: 存放在oss上的相对路径
 */
function uploadOss(file, dir){
  return new Promise((resolve, reject)=>{
    let key = `${dir}${util.formatTime(new Date().getTime(), 'YY-MM-DD')}/${new Date().getTime()}.png`;
    console.log(key)
    wx.uploadFile({
      url: 'https://xxx.aliyuncs.com', //仅为示例,非真实的接口地址
      filePath: file,
      name: 'file',
      formData: {
        name: file,
        key: key,
        policy: 'xxx',
        OSSAccessKeyId: 'xxx',
        success_action_status: '200',
        signature: 'xxx'
      },
      success: function(res) {
        console.log(res)
        resolve(res)
      },
      fail: function(err){
        console.error(err)
        reject(err)
      }
    })
  })
}
wx.chooseImage({
    sizeType: ['compressed'],
    count: count,
    success: function(res) {
      let file = res.tempFilePaths[0];
      Base.uploadOss(file, 'imgs/comment/')
        ...
    }
})

调用uploadOss方法成功进入resolve,但打印出的res结果却不尽人意。
clipboard.png
1:是什么原因导致没有返回上传后的文件地址?
2:有什么解决方法?

阅读 2.6k
1 个回答

成功后的新地址要自己拼接:

  //以上面代码为例
   oss文件地址 = 请求url + 入参key
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题