对于新的aws-sdk v3,特别是@aws-sdk/client-s3
,我不清楚如何将文件从S3存储到磁盘。
具有以下代码
const { Body } = await s3.send(new GetObjectCommand({
Bucket: 'myBucket',
Key: 'myKey',
}))
Body
可以是Readable | ReadableStream | Blob
类型。
我想把这个存到磁盘上的一个文件里。由于返回类型完全不同,有没有一种简单的方法来例如。从aws-sdk获取Buffer
或Stream.Readable
?
在aws-sdk v2中,.createReadStream()
函数似乎不再存在。
4条答案
按热度按时间68de4m5k1#
ReadableStream | Blob
仅在浏览器中可用。Node.js总是得到我需要的Readable
。解决方案非常简单,然后使用
fs.createWriteStream
和管道Readable
,如作为参考,这里有一个讨论文档改进的问题https://github.com/aws/aws-sdk-js-v3/issues/1877
pxq42qpu2#
要在typescript中完成此操作,您还可以执行
8dtrkrch3#
GetObjectCommand返回可读流,我们使用fs模块创建writeStream,并将GetObjectCommand返回的readableStream传递给writeStream保存文件
qyswt5oh4#
你可以使用上面提到的流方法,但你也可以只使用
fs/promises
库中的writeFile
方法:然后调用这个函数。
我认为这是从node版本v14.18.0开始的,因为这个方法接受流作为输入。