我正在尝试创建一个网页,一个人可以在其中上传图片,并将该图片存储在S3存储桶中。当前,我在上传到S3存储桶时收到以下错误消息:“不支持的身体有效载荷对象”。
这是我相关的HTML:
<form enctype="multipart/form-data" action="/editprofile" method="post">
<input type="file" value="Change Profile Picture" name="profilePicture" id="profilePicture" >
</form>
这是我相关的JS代码:
//in app.js
const fileupload = require("express-fileupload");
app.use(fileupload());
app.post('/editprofile', function(req, res) {
routes.editprofile(req, res);
});
//in routes.js in editprofile function
db.putInBucket("bucket", "key" + ".png", req.files.profilePicture);
//in db in putInBucket
var putInBucket = function (bucket, key, file) {
var upload = new AWS.S3.ManagedUpload({
params: {
Bucket: bucket,
Key: key,
Body: file
}
});
var promise = upload.promise();
promise.catch(function(error) {
console.log("Error in uploading to S3" + error);
});
};
答案 0 :(得分:2)
在上传到req.files.profilePicture
之前,您需要将S3
的内容转换为二进制。
var binaryProfilePicture = new Buffer(req.files.profilePicture, "binary");
db.putInBucket("bucket", "key" + ".png", binaryProfilePicture );