我最终尝试附加来自 s3 的文件而不将其保存到光盘,但我一开始就无法获取该文件。
这是我的代码:
const s3 = require('@aws-sdk/client-s3')
const bucketParams = {
"Bucket": "test-upload",
"Key": 'test.pdf'
};
try {
const data = await client.send(new s3.GetObjectCommand(bucketParams));
await new Promise((resolve, reject) => {
data.pipe(fs.createWriteStream('example.pdf'))
.on('error', err => reject(err))
.on('close', () => resolve())
})
console.log('File saved successfully');
} catch (err) {
console.log(err);
}
我收到的错误是:
TypeError: data.pipe is not a function
我可以看到它正在将其保存到光盘上,但它是一个空文件,而且格式也不正确。我做错了什么以及如何最终将其保存在内存中以便我可以将其附加到电子邮件中而无需将其保存到光盘?
有两种方法可以修复您的代码。
const { Body } = await client.send(new s3.GetObjectCommand(bucketParams));
await new Promise((resolve, reject) => {
Body.pipe(fs.createWriteStream('example.pdf'))
.on('error', err => reject(err))
.on('close', () => resolve())
})
或
const data = await client.send(new s3.GetObjectCommand(bucketParams));
await new Promise((resolve, reject) => {
data.Body.pipe(fs.createWriteStream('example.pdf'))
.on('error', err => reject(err))
.on('close', () => resolve())
})