2014-09-03 3 views
0

У меня есть простой мульти FormDataпосле ввода типа файл сервер node.js от углового вызова службы

<form action="/upload" enctype="multipart/form-data" method="post"> 
     <span class="btn btn-file"> 
     <input type="file" name="file" ng-model="file"/> 
     <span class="btn btn-primary" ng-click="upload()">Upload</span> 
     </span> 
</form> 

То, что я хочу сделать это, опубликовать всю информацию, относящуюся к файлу на сервер, написанном в Node.js

server.js Этот обработчик загрузки файлов написан на узле. Исключительно ожидает все параметры файла.

upload: function uploadfn (req, res) { 

    var form = new formidable.IncomingForm(); 
    form.parse(req, function(err, fields, files) { 
     // `file` is the name of the <input> field of type `file` 
     var old_path = files.file.path, 
     file_size = files.file.size, 
     file_ext = files.file.name.split('.').pop(), 
     index = old_path.lastIndexOf('/') + 1, 
     file_name = old_path.substr(index), 
     new_path = path.join(process.env.PWD, '/uploads/', file_name + '.' + file_ext); 
     fs.readFile(old_path, function(err, data) { 
      fs.writeFile(new_path, data, function(err) { 
       fs.unlink(old_path, function(err) { 
        if (err) { 
         res.status(500); 
         res.json({'success': false}); 
        } else { 
         res.status(200); 
         res.json({'success': true}); 
        } 
       }); 
      }); 
     }); 
    }); 
} 

Вещи, я застрял на это, у меня есть службы вызова готовый в угловую следующим образом:

service.factory('FileUpload', function ($resource) { 
    return $resource('/upload', {}, { 
     post: {method: 'POST'} 
    }); 
}); 

Этот вызов попадает в бэкенд от углового контроллера следующим

$scope.upload = function(){ 
    console.log($scope.file); 
    FileUpload.post(function(){ 
    }); 
} 

Я не уверен, как отправить файл submit, чтобы узел мог его поймать. Также $ scope.file не определен.

Пожалуйста, помогите мне решить эту проблему.

ответ

Смежные вопросы