繁体   English   中英

NodeJs上传csv字符串内容到s3

[英]NodeJs Upload csv string content to s3

我曾尝试将 csv 内容数据上传到 s3,但在我的代码下方无法正常工作,无法将 csv 数据存储到 csv.gz 文件中

var filename= "ff1.csv.gz"
var csvData = "username,email,year,month\n"
csvData = csvData + username +","+email+","+year_data+","+month_data+"\n"

var paramsu = {
    Bucket: bucket1,
    Key: filename,
    Body: csvData,
    ContentType: 'application/octet-stream'

  };


var res = await s3.putObject(paramsu).promise();

它显示损坏的 gzfile 无法提取

任何帮助都会真正挽救我的一天

如果您没有准备好文件,您可以创建一个写入流并使用它传递给 s3 sdk。

问题在这里得到解答https://stackoverflow.com/a/50291380/2688699

我们可以使用 multer-s3 将 IMAGE/ CSV/ EXCEL 文件上传到 AWS s3。

我使用.single(fieldname)方法上传单个文件。

const aws = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');

const s3 = new aws.S3({
  accessKeyId: process.env.AWS_ACCESS_KEY,
    secretAccessKey: process.env.AWS_SECRET_KEY,
    region: process.env.REGION,
});

 const upload = multer({
   storage: multerS3({
     s3: s3,
     bucket: process.env.AWS_S3_BUCKET,
     metadata: function (req, file, cb) {
       cb(null, {fieldName: 'Meta_Data'});
     },
     key: function (req, file, cb) {
      cb(null, file.originalname);
     },
     limits: {
        fileSize: 1024 * 1024 * 5 //  allowed only 5 MB files
    }
   })
 }).single('file');
 
exports.uploadfile = async(req,res,next)=>{
   try{ 
         upload(req,res, function(err){
             if(err){
                 console.log(err);
             }
             console.log(req.file.location);    
   })
})
}catch (err){
   res.status(400).json({
       status : 'fail', 
       message : err.message
   });
}
}

在路线文件中

router.route('/')
      .post(imageController.uploadfile);

暂无
暂无

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

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