files are not storing in local using ngfileupload

154 views Asked by At

I am trying to upload files using Node Api on server and i m using ngfileupload angular Module to handle image on front end. below is my code:

app.controller('MyCtrl',['Upload','$window',function(Upload,$window){
        var vm = this;
        vm.submit = function(){ 
            if (vm.upload_form.file.$valid && vm.file) { 
                vm.upload(vm.file); 
            }
        }
        vm.upload = function (file) {
            Upload.upload({
                url: '/api/upload', 
                data:{file:file} model
            }).then(function (resp) { 
                if(resp.data.error_code === 0){ //validate success
                    $window.alert('Success ' + resp.config.data.file.name + 'uploaded. Response: ');
                } else {
                    $window.alert('an error occured');
                }
            }, function (resp) { 
                console.log('Error status: ' + resp.status);
                $window.alert('Error status: ' + resp.status);
            }, function (evt) { 
                console.log(evt);
                var progressPercentage = parseInt(100.0 * evt.loaded / evt.total); 
                vm.progress = 'progress: ' + progressPercentage + '% '; 
            });
        };
    }]);

and my node api code is

apiRoutes.put('/upload', function(req, res){  
  var fstream;
  req.pipe(req.busboy);
  req.busboy.on('file', function(fieldname,file,filename){
    var filePath=path.join(__dirname, './public/file', filename);
    fstream=fs.createWriteStream(filePath);
    file.pipe(fstream);
    fstream.on('close', function(){
      console.log("File Saved...........");
    });
  }); 

});

Now problem is that , when i hit upload button its showing an alert Error Status:404 and an error: Not allowed to load local resource: file:///C:/fakepath/IMG-20160126-WA0013.jpg I dont know how to fix it... please help me

1

There are 1 answers

0
Alex Kulagin On BEST ANSWER

NgFileUpload send POST request by default. Your api router accepts PUT requests only.

Try to change apiRoutes.put... to apiRouter.post... or set

Upload.upload({
    url: '/api/upload', 
    data: {file:file},
    method: 'PUT'
})