【发布时间】:2020-02-02 16:13:57
【问题描述】:
我正在尝试通过来自 NodeJS 服务器(而不是浏览器)的签名 URL 将图像上传到 aws-s3。要上传的图像已由 NodeJS 生成。我正在从 aws 获取签名 URL 并成功将其上传到 s3。
但我的图像已损坏。出于某种原因,S3 正在向我的图像添加一些标题(比较附加的图像)。
我做错了什么?
获取签名网址:
try {
var params = {
Bucket: bucketName,
Key: 'FILE_NAME.png',
Expires: 60
};
const url = await s3.getSignedUrlPromise('putObject', params);
return url;
} catch (err) {
throw err;
}
上传到 s3
var stats = fs.statSync(filePath);
var fileSizeInBytes = stats["size"];
const imageBuffer = fs.readFileSync(filePath);
var formData = {
'file': {
value: imageBuffer,
options: {
filename: 'FILE_NAME.png'
}
}
};
request({
method: 'put',
url,
headers: {
'Content-Length': fileSizeInBytes,
'Content-MD': md5(imageBuffer)
},
formData
}, function (err, res, body) {
console.log('body',body);
});
对比实际图片和上传到s3的图片。 S3 添加了一些头文件:
【问题讨论】:
标签: node.js amazon-s3 upload pre-signed-url