Angularjs $http post file and form data

后端 未结 8 1144
广开言路
广开言路 2020-11-28 22:14

I have the below request in python

import requests, json, io

cookie = {}
payload = {\"Name\":\"abc\"}
url = \"/test\"
file = \"out/test.json\"

fi = {\'file         


        
8条回答
  •  青春惊慌失措
    2020-11-28 23:15

    here is my solution:

    // Controller
    $scope.uploadImg = function( files ) {
      $scope.data.avatar = files[0];
    }
    
    $scope.update = function() {
      var formData = new FormData();
      formData.append('desc', data.desc);
      formData.append('avatar', data.avatar);
      SomeService.upload( formData );
    }
    
    
    // Service
    upload: function( formData ) {
      var deferred = $q.defer();
      var url = "/upload"	;
      
      var request = {
        "url": url,
        "method": "POST",
        "data": formData,
        "headers": {
          'Content-Type' : undefined // important
        }
      };
    
      console.log(request);
    
      $http(request).success(function(data){
        deferred.resolve(data);
      }).error(function(error){
        deferred.reject(error);
      });
      return deferred.promise;
    }
    
    
    // backend use express and multer
    // a part of the code
    var multer = require('multer');
    var storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, '../public/img')
      },
      filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now() + '.jpg');
      }
    })
    
    var upload = multer({ storage: storage })
    app.post('/upload', upload.single('avatar'), function(req, res, next) {
      // do something
      console.log(req.body);
      res.send(req.body);
    });