- 当前 Bug 的表现(可附上截图)
返回结果:
{"errorCode":1,"errorMessage":"user code exception caught","stackTrace":"Error: errCode: -501001 resource system error | errMsg: uploadFile:fail MultipartParser.end(): stream ended unexpectedly: state = PART_DATA; at uploadFile api; \n at new CloudSDKError (/var/user/node_modules/wx-server-sdk/index.js:2679:28)\n at returnAsCloudSDKError (/var/user/node_modules/wx-server-sdk/index.js:2731:16)\n at Object.returnAsFinalCloudSDKError (/var/user/node_modules/wx-server-sdk/index.js:2745:13)\n at Object.\u003canonymous\u003e (/var/user/node_modules/wx-server-sdk/index.js:2213:58)\n at step (/var/user/node_modules/tslib/tslib.js:133:27)\n at Object.throw (/var/user/node_modules/tslib/tslib.js:114:57)\n at rejected (/var/user/node_modules/tslib/tslib.js:105:69)\n at \u003canonymous\u003e\n at process._tickCallback (internal/process/next_tick.js:188:7)"}
- 预期表现
传入了要求的参数【可读流】,调用应该成功
- 复现路径
- 提供一个最简复现 Demo
提供三种云函数调用case,均无法实现写数据到存储,本地测试创建的可读流没有问题
const cloud = require('wx-server-sdk')
const fs = require('fs')
const streamifier = require('streamifier')
var streamBuffers = require('stream-buffers');
cloud.init()
exports.main = async (event, context) => {
/* --------------------------case0---------------------------------
var readerStream = new stream.PassThrough();
readerStream.end(new Buffer('Test data.'));
----------------------------------------------------------------------*/
/* --------------------------case1---------------------------------
let readerStream = streamifier.createReadStream(new Buffer('Test data.'))
----------------------------------------------------------------------*/
/* --------------------------case2---------------------------------
var readerStream = new streamBuffers.ReadableStreamBuffer({
frequency: 10, // in milliseconds.
chunkSize: 2048 // in bytes.
});
readerStream.put('Test data.');
readerStream.stop();
----------------------------------------------------------------------*/
return await cloud.uploadFile({
cloudPath: 'demo.txt',
fileContent: readerStream
})
}
云函数的 空间只能读不能写 。就算能写也没意义,因为运行完就销毁。文件读写请用云存储
不好意思,我没说明白
我的问题是怎么通过【云函数】写数据到【云存储】
或者说怎么写数据到【云存储】
而不是仅仅从其他地方下载文件,然后上传下载的文件到【云存储】
因为小程序本地也没法随意读写缓存的文件,有的接口只要上传/下载
https://developers.weixin.qq.com/community/develop/doc/000ce8c0a28ad0019197b373156004
看看图片等等二进制文件写到云存储
https://developers.weixin.qq.com/community/develop/doc/0000a250364d7090d797101a351804
这个是文本文件写到云存储
谢谢谢谢
您的回答对我非常有用~
或者说【小程序云开发】只能做文件的【搬运工】,不能做文件的生【产者吗】?
官方说的数据类型是fs.ReadStream
用fs.createReadStream来获取流数据
谢谢谢谢
对的,这个太局限了,有什么办法能够写数据到【云存储】吗?
云函数生成一些重要信息,需要存储,应该放在哪呢?
可以把信息用 Buffer.from 转为buffer
然后用cloud.uploadFile上传 fileContent 也支持buffer
本来fs.createReadStream返回的就是一个Buffer....
fs.ReadStream 想不到可以传 buffer
非常感谢