ExpressJS 从 FormData 获取文件

ExpressJS get file from FormData

我是ExpressJS的新蜜蜂, 我想从javascript上传一个file和一些data,使用AJAX post作为FormData object,表达js routes,保存文件在服务器中。我可以从前端 post,但无法从服务器端检索数据。

以下是我试过的代码片段:

AJAX post 来自客户端代码片段:

var files = [];
    $('#upload').on('change',function(){
        var form_data = new FormData();
        form_data.append('file_uplaoded',$('#upload')[0].files[0]);
        form_data.append('name1',"10000900055");
        form_data.append('name2',"10000900044");
        form_data.append('name3',"10000900033");
        form_data.append('name4',"10000900022");
        form_data.append('name5',"10000900011");
        console.log(form_data);
        $.ajax({
            type: "POST",
            url: '/ulploadfile',
            data: form_data,
            cache: false,
            processData: false,
            contentType: false,
            success: function(data){
                alert('success');
            }
            // dataType: 'json',
            // contentType: "application/json; charset=utf-8"
        }).done(function(data) {
            // alert('success1');
        });
    });

服务器端代码片段:

router.post('/ulploadfile', function(req, res, next) {
    var body = '';
    try {
        req.on('data', function (data) {
            body += data;
        });
        req.on('end', function () {
            var post = qs.parse(body);
            console.log(post);
            res.send("UPLOADING FILE RESPONSE");
        });
    } catch (e) {
        console.log(e);
        res.send("UPLOADING FILE RESPONSE ERRPR");
    } finally {
    }
});

更新 输出截图

所以我想知道如何从后端的请求对象中检索数据 post。我想在不使用任何其他包的情况下做到这一点。

非常感谢您的帮助和建议。

POST 请求中有一个很好的文件(多部分数据)模块,称为 multer

您可以在其中添加验证函数、目的地、不同的存储... 甚至还有插件 multer-s3 用作存储。

router.post('/ulploadfile', upload.single('file_uplaoded'), function(req, res, next) {
  // req.file is the `file_uplaoded` file 
  // req.body will hold the text fields, if there were any 
})