收藏
回答

云函数无法中转文件到云存储?

想通过云函数访问自己的服务器获取文件,并上传到云存储。

本地调试没问题,可以从服务器上获取文件并成功上传到云存储。

可是部署到云端后,云开发工具测试和小程序真机测试,都无法实现上传文件。(本地和云端代码完全一致)

由于无法云端调试,所以不清楚是获取到文件数据后,写入临时文件的问题还是上传到云存储时出了问题。

以下是云函数问题代码:

exports.main = async(event, context) => {

 const fileName = 'hanziResult.xlsx'

 await rp(encodeURI("https://test.haijie001.top/createHanzi?paperType=01&hanziContent=测试数据")).pipe(fs.createWriteStream(fileName)).on('close', function() {

   const fileStream = fs.createReadStream(fileName)

   cloud.uploadFile({

     cloudPath: "hanziResult.xlsx",

     fileContent: fileStream,

   })

 });

 return "finish";

}


最后一次编辑于  10-22
回答关注问题邀请回答
收藏

2 个回答

  • 刘宏清 ʘᴗʘ
    刘宏清 ʘᴗʘ
    10-23

    【问题已解决】

    换了一种思路,不用pipe,直接从服务器获取buffer,云端可以实现从服务器下载文件和上传到云存储。

    以下是修正后代码:

    const code_options = {

       method: 'GET',

       url: encodeURI("https://test.haijie001.top/createHanzi?paperType=01&hanziContent=你好"),

       json: true,

       encoding: null

     };

     const buffer = await rp(code_options);

     const upload = await cloud.uploadFile({

       cloudPath: 'hanziResult.xlsx',

       fileContent: buffer,

     })


    10-23
    赞同
    回复
  • 吃包子不吐包子皮
    吃包子不吐包子皮
    10-22

    异步函数都等待 await 一下, 看是否ok

    10-22
    赞同
    回复 3
    • 刘宏清 ʘᴗʘ
      刘宏清 ʘᴗʘ
      10-22
      内部uploadFile尝试过await了,效果还是一样
      10-22
      回复
    • 吃包子不吐包子皮
      吃包子不吐包子皮
      10-22回复刘宏清 ʘᴗʘ
      onclose 打印一些调试信息 日志能看到吗
      10-22
      回复
    • 刘宏清 ʘᴗʘ
      刘宏清 ʘᴗʘ
      10-22回复吃包子不吐包子皮
      日志可以看到,本地调试功能都好使。可是部署以后就不好用了,又没有云端调试。
      10-22
      回复
问题标签