收藏
回答

云函数使用uploadFile上传比较大的图片(base64)时,会失败怎么办呢?

如题,云函数使用uploadFile上传比较大的图片(特别是用苹果手机拍出来的照片),上传会失败,云函数代码见下方。

请问大佬们,①上传图片比较好的方法是什么呢?②如果还是使用我这种方法,怎么有效的压缩图片不影响图片质量还能完成上传呢?

感谢感谢!


云函数:exports.main = async (event, context) => {

  try {

    return await cloud.uploadFile({

      cloudPath: event.path,

      fileContent: new Buffer(event.file, 'base64')

    })

  } catch (e) {

    return e;

  }

}

最后一次编辑于  2020-08-26
回答关注问题邀请回答
收藏

2 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-08-26

    wx.cloud.CDN 了解一下

    2020-08-26
    有用 1
    回复 24
    • 大白👊🏼
      大白👊🏼
      2020-08-26
      请问云函数内怎么请求CDN内部的数据呢?
      wx.cloud.callFunction({ 
                          name: “upload_image”, 
                          data: { 
                            path: this.data.path, 
                            file: wx.cloud.CDN({ 
                              type: "filePath", 
                              file:list.base64Code 
                            })  
                          },
      2020-08-26
      1
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-08-26回复大白👊🏼
      http请求  axios got  request-promise.  你传的是临时路径,还是base64啊?
      2020-08-26
      1
      回复
    • 大白👊🏼
      大白👊🏼
      2020-08-26
      请问是file.CDN.file么?
      2020-08-26
      1
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-08-26回复大白👊🏼
      file.CDN.file  这是啥?
      2020-08-26
      1
      回复
    • 大白👊🏼
      大白👊🏼
      2020-08-26回复Mr.Zhao
      我不知道在云函数中怎么把file的值读出来,请问怎么做呢?感谢您
      2020-08-26
      1
      回复
    查看更多(19)
  • 英忠通信
    英忠通信
    2020-09-20

    通常用 wx.cloud.uploadFile 更快且是大文件(没测试过上限但 5M 内可以)。

    若因故上述指令不能执行,可尝试:自建云函数,并在其中用 cloud.uploadFile 上传指令。但经测试,整个过程只能上传不超过 70K 的文件。至于 Base64方式上传,试过发现效率不高(估计是转码的原因)。

    1. 在本地用 wx.getFileSystemManager().readFile() 读取文件内容到 res.data;

    2. 在本地用 wx.cloud.callFunction 调用(自建的)云函数并带参传递 res.data。经测试这个 res.data 在 70K 内没问题;

    3. 在云函数内用 Buffer.from(res.data) 接收上传的数据块。Buffer 是 Node.js 的一个类。

    4. 在云函数内用 cloud.uploadFile({cloudPath: path1, fileContent: Buffer.from(res.data), })上传到云存储。

    2020-09-20
    有用
    回复
登录 后发表内容
问题标签