想通过云函数访问自己的服务器获取文件,并上传到云存储。
本地调试没问题,可以从服务器上获取文件并成功上传到云存储。
可是部署到云端后,云开发工具测试和小程序真机测试,都无法实现上传文件。(本地和云端代码完全一致)
由于无法云端调试,所以不清楚是获取到文件数据后,写入临时文件的问题还是上传到云存储时出了问题。
以下是云函数问题代码:
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";
}
【问题已解决】
换了一种思路,不用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