2017-01-22 5 views
0

У меня нет ошибки, но в каталоге нет файлов, поэтому я полностью потерял место, где искал ошибку. Я очень ценю любую помощь.Попытка сохранить файлы на сервер (Express) с клиента (Угловая) с помощью multer

HTML:

 <div class="form-group"> 
      <label for="file">File</label> 
      <input type="file" name="file" onchange="angular.element(this).scope().uploadFile('front',this.files)"/> 
      <label for="file">File2</label> 
      <input type="file" name="file" onchange="angular.element(this).scope().uploadFile('back',this.files)"/> 
     </div> 

Угловой:

.controller('UploadCtrl', function ($scope, close, Pics) { 
    var fd = new FormData(); 
    $scope.uploadFile = function(fileType, files){ 
     fd.append(fileType , files) 
    } 

    $scope.con = function() { 
     Pics.sendPhotos(fd) 
    } 
}) 

завод Файл:

.factory('Pics', function ($http) { 
    var sendPhotos = function (files) { 
     return $http({ 
     method: 'POST', 
     url: '/upload/photos', 
     headers: { 
      'Content-Type': '' 
     }, 
     data: files, 
     transformRequest : angular.identity 
     }).then(function (resp) { 
     console.log('done') 
     }) 
    } 

    return ({ 
     sendPhotos 
    }) 
    }) 

Сервер:

var express = require('express'); 
var morgan = require('morgan'); 
var bodyParser = require('body-parser'); 
var path = require('path'); 
var multer = require('multer'); 


var app = express(); 


var storage = multer.diskStorage({ 
    destination: function (req, file, cb){ 
    cb(null, '/Users/pheon/Desktop/Smartfolio-1/server/uploads') 
    }, 
    filename: function (req, file, cb){ 
    cb(null, file.fieldname) 
    } 
}) 

var upload = multer({storage: storage}); 

var middle = upload.fields([{ 
    name: 'front', maxcount: 1 
}, {name: 'back', maxcount: 1}]); 

app.use(middle); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(morgan('dev')); 

app.use(express.static(path.join(__dirname, '/../client'))); 

require('./routes.js')(app, express); 
var port = process.env.PORT || 8000; 

app.listen(port, function() { 
    console.log('Listening on port ', port); 
}) 


module.exports = app; 

Маршруты

var uController = require('./controllers/userController.js'); 
var iController = require('./controllers/imgController.js'); 
var multer = require('./config/multer') 

module.exports = function (app, express) { 
    app.post('/signin', uController.signin); 
    app.post('/register', uController.register); 
    app.get('/photos', iController.fetch); 
    app.post('/upload/photos', iController.upload); 
} 

imgController (InProgress):

var db = require('./../config/db'); 
module.exports = { 
    fetch: function (req, res) { 
    console.log('here') 
    }, 
    upload: function (req, res) { 
    console.log(req.body)//shows up empty 
    } 
}; 

ответ

0

Я нашел решение. В заводском файле вместо content-type : '' он должен указать content-type: undefined