Search code examples
angularjsnode.jsfile-uploadng-file-upload

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


I am trying to upload file using angular js

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

Upload.upload(requestData);

This is what my controller have.

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

This is what my route have. Here it is printing 'undefined' instead of name.

Please help me.


Solution

  • You can send more parameters in data field.

    This is how I'm using upload function :

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

    Hope it helps.

    EDIT

    This is how I'm receiving my file on Node.js side

    Multer middleware function

    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');
    

    My route

    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();
            }
        });
    });
    

    Hope it helps.