Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在multer s3中获取req.body参数_Node.js_Multer S3 - Fatal编程技术网

Node.js 如何在multer s3中获取req.body参数

Node.js 如何在multer s3中获取req.body参数,node.js,multer-s3,Node.js,Multer S3,上面是MulterS3代码 var upload = multer({ storage: multerS3({ s3: s3, bucket: 'bucket', metadata: function(req, file, cb) { cb(null, { fieldName: file.fieldname }); }, key: function(req, file, cb) { c

上面是MulterS3代码

var upload = multer({
storage: multerS3({
    s3: s3,
    bucket: 'bucket',
    metadata: function(req, file, cb) {
        cb(null, {
            fieldName: file.fieldname
        });
    },
    key: function(req, file, cb) {
        console.log('req.body', req.params.id); //not getting
        console.log('req.body', req.body);
        //Not getting param here that passed in api 
        //Need to save file on s3 at specific location i.e /foldername/filename
        //But the folder name not getting from API
        cb(null, file.originalname)
    }
})  }).array('userFile', 1);
上面的代码调用multer上传函数。我正在将API中的数据(来自Angular2,set-Content-Type):“多部分/表单数据”解析为表单数据

app.post('/saveData', function(req, res, next) {
upload(req, res, function(err) {
    console.log('err' + err);
    var status = '';
    var result = '';
    var link = '';
    if (err) {
        status = false;
    } else {
        status = true;
    }
    result = {
        "status": status,
        "link": link
    }
});
res.send(result);   });

我需要API中的
req.body
数据,比如文件夹名和其他,这样我就可以将文件放到S3上的特定位置。需要在multerS3的key:
函数(req,file,cb){
中包含req.body数据。

读取dropzone.js的源代码我发现问题在于S3希望该文件是formdata的最后一个参数

如果文件输入是表单的最后一个输入,则在创建FormData()的新实例时,还应尝试传递表单标记的引用


所以像这样传递id:
newformdata(document.getElementById(myForm)

然后,您应该在键回调函数req.body中找到表单的输入值

let formData: FormData = new FormData();
formData.append('userFile', file);
formData.append('fileName', fileName);
<form
    id="myForm"
    className="col-md-10 col-md-offset-1"
>