【发布时间】:2019-12-13 16:59:56
【问题描述】:
我编写了一个使用aws-sdk 将文件上传到s3 的函数,但我遇到了问题。
当我将Body 替换为Body: "test" 时,函数将成功执行,我可以在s3 中看到test 的内容。
但我想上传pdf文件之类的文件,无法运行,报错为:
UnhandledPromiseRejectionWarning:TypeError [ERR_INVALID_ARG_TYPE]: “路径”参数必须是字符串、缓冲区或 URL 类型之一。 在 ReadStream.open 的 Object.open (fs.js:406:3) 接收到类型对象 (internal/fs/streams.js:110:12) 在新的 ReadStream (internal/fs/streams.js:99:10) 在 Object.createReadStream (fs.js:1725:10)
这是我的代码:
import { createWriteStream, createReadStream } from "fs";
import AWS from 'aws-sdk';
const fs = require('fs');
const uploadS3 = async ({file}) => {
const { stream, filename} = file;
AWS.config.update({
accessKeyId: '*******',
secretAccessKey: '********',
region: 'us-east-1'
});
let params = {
Bucket: "test-files-staging",
Key: 'documents/' + filename,
Body: fs.createReadStream(file),
ACL: 'public-read'
};
await new AWS.S3().putObject(params).promise().then(() => {
console.log('Success!!!')
}).catch((err) => { console.log(`Error: ${err}`) })
}
提前致谢。
【问题讨论】:
标签: javascript node.js amazon-s3 file-upload aws-sdk