How to send data along with file in http POST (angularjs + expressjs)?

后端 未结 3 1019
天命终不由人
天命终不由人 2021-01-14 02:41

Situation

I implemented file uploading. Front-end code is taken from popular tutorial. I send POST in service:

myApp.service(\'fileUpload\', [\'$http         


        
3条回答
  •  南笙
    南笙 (楼主)
    2021-01-14 03:23

    To send data (i.e. json) and file in one POST request add both to form data:

    myApp.service('fileUpload', ['$http', function ($http) {
        this.uploadFileToUrl = function(file, uploadUrl){
            var fd = new FormData();
            fd.append('file', file);
    
            var info = {
                "text":"additional info"
            };
            fd.append('data', angular.toJson(info));
    
            $http.post(uploadUrl, fd, {
                 transformRequest: angular.identity,
                 headers: {'Content-Type': undefined}
            })
    
            .success(function(){
            })
    
            .error(function(){
            });
        }
    }]);
    

    On server side it's in req.body.data, so it can be received i.e. like this:

    upload(req, res, function (err) {
        if (err) {
            res.json({error_code: 1, err_desc: err});
            return;
        }
    
        console.log(req.body.data);
    
        res.json({error_code: 0, err_desc: null});
    })
    

提交回复
热议问题