来自请求体的aws-sdk node.js s3 putObject

edd*_*die 9 amazon-s3 amazon-web-services node.js

我正在尝试使用AWS-SDK将PDF保存到S3中.我通过POST(应用程序/ PDF)的主体获取PDF.

使用fs.writeFile将文件保存到本地HD时,文件看起来没问题.但是当上传到s3时文件已损坏(单个白页pdf)

任何帮助或提示将不胜感激!

var data = body // body from a POST request.
var fileName = "test.pdf";

fs.writeFile(fileName, data, {encoding : "binary"}, function(err, data) {
    console.log('saved'); // File is OK!
});

s3.putObject({ Bucket: "bucketName", Key: fileName, Body: data }, function(err, data) {
    console.log('uploaded') // File uploads incorrectly.
});
Run Code Online (Sandbox Code Playgroud)

编辑:

如果我写,然后读取文件然后上传它,它的工作原理.

fs.writeFile(fileName, data, {encoding : "binary"}, function(err, data) {
    fs.readFile(fileName, function(err, fileData) {
        s3.putObject({ Bucket: "bucketName", Key: fileName, Body: fileData }, function(err, data) {
            console.log('uploaded') // File uploads correctly.
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

小智 4

尝试在 S3 上设置 contentType 和/或 ContentEncoding。

 ContentType: 'binary', ContentEncoding: 'utf8'
Run Code Online (Sandbox Code Playgroud)

请参阅此处的代码示例,了解putObject 使 Nodejs 中服务器上的对象变大的工作示例