如何在 angular js 中使用 Upload.upload 发送附加参数?

How to send additional parameters using Upload.upload in angular js?

我正在尝试使用 angular js

上传文件
var requestData = {
      url: "/file_upload",
      data: {"name":"jack", file:file},
    };

Upload.upload(requestData);

这是我的控制器。

app.post("/file_upload", function(req, res){
   console.log(req.body.name);
   res.send("uploading...");
});

这是我的路线。 这里打印的是 'undefined' 而不是 name.

请帮帮我。

您可以在 data 字段中发送更多参数。

我是这样使用上传功能的:

Upload.upload({
    url: url,
    method: 'POST',
    file: file,
    data: {name:'Hello!'} // Here you can send JSON parameters
});

希望对您有所帮助。

编辑

这就是我在 Node.js 端接收文件的方式

Multer中间件函数

var uploader = multer({
    storage: multer.diskStorage({
        destination: function (req, file, next) {
            next(null, '/path/to/final/file');
        },
        filename: function (req, file, next) {
            next(null, 'finalFileName.csv');
        }
    }),
    limits: {
        fieldNameSize: 100,
        fileSize: 20000000,
        files: 1,
        fields: 5
    }
}).single('file');

我的路线

server.post('/file_upload', function (req, res) {
    uploader(req, res, function (err) { // call uploader middleware
        if (err) {
            throw err;
        }
        else if (req.file) {
            console.log(req.file);
            console.log(req.body.name); // I can use parameters
            res.status(200).json('OK!').end();
        }
        else {
            res.status(424).json('Error !').end();
        }
    });
});

希望对您有所帮助。

Upload.upload({
    url: url,
        method: "POST",
        data: {
            details: {name: jack},
            files: files
        }
}).then(function (success) {
    console.log(success);
});