繁体   English   中英

将图像上传到s3存储桶节点js

[英]upload image to s3 bucket node js

我将图像从表单上传到我的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上接收文件上载。

要安装run: 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM