2017-01-22 2 views
0

zu speichern Ich bekomme keinen Fehler, aber es gibt keine Dateien im Verzeichnis, so dass ich völlig verloren bin, wo ich nach dem Bug suchen soll. Ich schätze jede Hilfe, die angeboten wird.Versuchen, Dateien auf Server (Express) vom Client (Angular) mit 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> 

Eckig:

.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) 
    } 
}) 

Fabrik File:

.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 
    }) 
    }) 

Server:

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; 

Routen

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 
    } 
}; 

Antwort

0

fand ich die Lösung. In der Fabrikdatei, anstelle von content-type : '' sollte es content-type: undefined

sagen
Verwandte Themen