javascript - 上传图片到s3 bucket node js

标签 javascript node.js amazon-web-services amazon-s3

我在将我的图像从表单上传到我的 s3 存储桶时遇到了一些问题。目前部分图片已上传,例如 19kb 而不是完整的 272kb,如果我尝试从我的存储桶中打开图片,它会损坏

app.post('/admin/addClub', (req, res) => {
  if (!req.user) {
  res.redirect('/admin');
  return;
}

// Upload image to S3
var s3Bucket = new AWS.S3( { params: {Bucket: process.env.AWS_BUCKET, Key: process.env.AWS_ACCESS_KEY_ID} } )
var data = { Key: req.body.imageBanner, // file from form
             Body: req.body.imageBanner, // Not sure here
             ACL: "public-read",
             ContentType: helper.getContentTypeByFile(req.body.imageBanner)
           };
s3Bucket.putObject(data, function(err, data){
  if (err) 
  { console.log('Error uploading data: ', data); 
    res.redirect('/admin/main');
  } else {
    console.log('succesfully uploaded the image!');
    res.redirect('/admin/main');
  }
});

任何人都可以建议我需要为 Body 键传递什么吗?因为我认为这一定是我的问题

谢谢

最佳答案

您需要集成 express-fileupload 包,使您可以在 Express 上接收文件上传。

安装运行:npm install --save express-fileupload

然后你需要通过 req.files.imageBanner.data (假设您的文件上传字段看起来像 <input name="imageBanner" type="file" /> )作为 Body范围。它应该是这样的:

var fileUpload = require('express-fileupload');

app.use(fileUpload());

app.post('/admin/addClub', (req, res) => {
  if (!req.user) {
    res.redirect('/admin');
    return;
  }

  // Upload image to S3
  var s3Bucket = new AWS.S3( { params: {Bucket: process.env.AWS_BUCKET, Key: process.env.AWS_ACCESS_KEY_ID} } )
  var data = { Key: req.body.imageBanner, // file from form
               Body: req.files.imageBanner.data,
               ACL: "public-read",
               ContentType: helper.getContentTypeByFile(req.body.imageBanner)
             };
  s3Bucket.putObject(data, function(err, data){
    if (err) 
    { console.log('Error uploading data: ', data); 
      res.redirect('/admin/main');
    } else {
      console.log('succesfully uploaded the image!');
      res.redirect('/admin/main');
    }
  });
});

您可以在此处找到 express-fileupload 包的文档:

https://www.npmjs.com/package/express-fileupload

关于javascript - 上传图片到s3 bucket node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42249453/

相关文章:

javascript - 使用 Google Calendar API 返回 401(未授权)

javascript - 全屏不适用于 Iphone 6s 和 5s

javascript - 如果之前 DOM 元素中的部分旧内容达到了特定高度,则创建新的 DOM 元素

amazon-web-services - AWS-SQS : How to set maxConcurrentConsumers?

javascript - 用于删除紧随非数字后面的零的正则表达式

javascript - 封装 jQuery block 以供重用

python - AWS Boto3 Python run_instances方法不解析UserData参数

android - AppSync 和推送通知

node.js - Socket.io 中的服务器端套接字在 'connect' 时返回错误的命名空间

ios - socket.IO-objc 与 AZSocketIO