Le *_*con 5 javascript amazon-s3 node.js aws-sdk
我将 pdf 文件上传到 S3 时遇到问题。
我可以PDFkit在本地使用和存储它们来创建 pdf 文件(我可以在浏览器中查看它们)。
但是,当我尝试将它们上传到我的 S3 存储时,出现此错误:无法加载 PDF 文档。在我的浏览器中打开 pdf 时。您可以查看: https://s3.us-east-2.amazonaws.com/pdf-twitter-bucket/twitter/HvkH98YA0p.pdf
fs.readFile('../pdf/' + fileName, 'utf8', function (err, contents) {
const buf = new Buffer(contents, 'base64');
// define params
const params = {
Bucket: 'pdf-twitter-bucket',
Key: 'twitter/' + fileName,
Body: buf,
ContentType: 'application/pdf',
ACL: 'public-read'
};
s3bucket.upload(params, function (err) {
if (err) {
console.log('error in callback');
console.log(err);
}
res.end(
'https://s3.us-east-2.amazonaws.com/pdf-twitter-bucket/twitter/' +
fileName
); // send the link to s3
});
});
Run Code Online (Sandbox Code Playgroud)
我尝试了很多选项:1)使用Buffeer和不使用Buffer
2)我上传文件没有问题.txt3)我什至尝试过将字符串作为Body值传递
在写这个问题之前,我进行了一个小研究,发现了类似的问题:
https://github.com/VeliovGroup/Meteor-Files/issues/406
不幸的是,它对我没有多大帮助......
小智 4
我在 S3 上传时遇到了同样的问题。我无法打开 PDF,它的大小只有几个字节(而不是几KB)。我认为问题是我没有等待写入流完成。
这现在对我有用:
document.pipe(fs.createWriteStream(fileName));
document.end();
document.on('end', function () {
fs.readFile(fileName, function (err, data) {
if (err) {
console.log(err);
}
s3.upload({
Bucket: s3Bucket,
Key: fileName,
Body: data,
ContentType: 'application/pdf',
acl: 'private',
contentDisposition: 'attachment',
ServerSideEncryption: 'AES256'
}, function(err, data) {
if (err) {
console.log(err);
}
});
});
});Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
6001 次 |
| 最近记录: |