mic*_*lik 5 amazon-s3 node.js aws-sdk aws-sdk-nodejs
特别是对于新的 aws-sdk v3,@aws-sdk/client-s3
我不清楚如何将文件从 S3 存储到磁盘。
有以下代码
const { Body } = await s3.send(new GetObjectCommand({
Bucket: 'myBucket',
Key: 'myKey',
}))
Run Code Online (Sandbox Code Playgroud)
的Body
可以是类型的Readable | ReadableStream | Blob
。
我想将其存储到磁盘上的文件中。由于返回类型完全不同,是否有一种简单的方法可以例如从 aws-sdk获取 aBuffer
或Stream.Readable
?
在 aws-sdk v2 中.createReadStream()
,似乎不再存在的功能很容易。
mic*_*lik 18
看来ReadableStream | Blob
只能在浏览器中使用。Node.js 总是能得到Readable
我需要的东西。
之后的解决方案非常简单,通过fs.createWriteStream
管道传输,Readable
例如
await new Promise((resolve, reject) => {
Body.pipe(fs.createWriteStream(filePath))
.on('error', err => reject(err))
.on('close', () => resolve())
})
Run Code Online (Sandbox Code Playgroud)
作为参考,这里有一个讨论文档改进的问题https://github.com/aws/aws-sdk-js-v3/issues/1877
归档时间: |
|
查看次数: |
625 次 |
最近记录: |