云函数无法中转文件到云存储?
发布于 5 年前 作者 kangyan 6176 次浏览 来自 官方Issues

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

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

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

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

以下是云函数问题代码:

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”;

}

2 回复

【问题已解决】

换了一种思路,不用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,

 })

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

回到顶部