将图像从html输入上传到S3存储桶

时间:2020-01-12 05:39:19

标签: javascript html amazon-s3 file-upload

我正在尝试创建一个网页,一个人可以在其中上传图片,并将该图片存储在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);
  });
};

1 个答案:

答案 0 :(得分:2)

在上传到req.files.profilePicture之前,您需要将S3的内容转换为二进制。

var binaryProfilePicture = new Buffer(req.files.profilePicture, "binary");

db.putInBucket("bucket", "key" + ".png", binaryProfilePicture );

相关问题