2017-02-09 66 views
1

我想将文件发送到我的Node.js应用程序,但似乎应用程序没有收到任何内容。我不知道该怎么做。我该如何检查如果我已经发送了该文件,并且如果我在req中收到它?将文件从Angular发送到Node Express

<form> 
    <input type = "file" file-model="files" multiple/> 
    <button class="md-primary md-button md-cyan-theme md-ink-ripple" ng-click = "vm.uploadFile()">upload me</button> 
</form> 

这是我的控制器:

function uploadFile() { 
    console.log("Load"); 

    var fd = new FormData(); 
    console.log($scope.files) // FileList {0: File, Length: 1} 

    angular.forEach($scope.files, function (file) { 
    fd.append('file', file); 
    }); 

    console.log(fd); // FormData {} (Empty?) 

    $http.post('http://localhost:8090/file-upload'), { 
    headers: {'Content-Type': undefined }, 
    files: fd 
    }).success(function (d) { 
    console.log(d); 
    }); 
} 

这是我的指令:

.directive('fileMode', ['$parse', function ($parse) { 
    return { 
    restrict: 'A', 
    link: function (scope, element, attrs) { 
     element.bind('change', function() { 
     $parse(attrs.fileModel).assign(scope, elemtn[0].files); 
     scope.$apply(); 
     }); 
    } 
    }; 
}]) 

这里是我的快递应用程序:

app.post('/file-upload', function (req, res, next) { 
    console.log("Sent!"); 

    var storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
     callback(null, './uploads'); 
    }, 
    filename: function (req, file, cb) { 
     cb(null, file.fieldname); 
    } 
    }); 

    var upload = multer({ storage : Storage }).array('userPhoto', 2); 
    upload(req, res, function (err) { 
    console.log(req.body.data.files); 

    if (err) return res.end("Error uploading file."); 
    res.end("File is uploaded."); 
    }) 
}) 

谢谢你的帮助。

+0

那你的后端代码? – Aer0

+0

增加了后端代码 – Serhiy

回答

1

字段名称不是网络形式和multer配置相同:

var upload = multer({ storage : storage }).array('file',2); 
+0

看起来像fd在fronend代码是空的。不明白为什么 – Serhiy

0

希望这会起作用!

var express  = require('express'), 
    app   = express(), 
    bodyParser = require('body-parser'), 
    multer  = require('multer'); 

app.use(function (req, res, next) { 
    res.header("Access-Control-Allow-Origin", "http://localhost"); 
    res.header(
    "Access-Control-Allow-Origin", 
    "Origin, X-Requested-With, Content-Type, Accept" 
); 
    next(); 
}); 

app.use(express.static('../client')); 
app.use(bodyParser.json()); 

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, './uploads/'); 
    }, 
    filename: function (req, file, cb) { 
    var split = file.originalname.split('.'); 
    cb(null, file.fieldname + "-" + Date.now() + "." + split[split.length - 1]); 
    } 
}); 
var upload = multer({ storage : storage }).single('file'); 


app.post('/upload', function (req, res) { 
    upload(req, res, function (err) { 
    if (err) res.json({ error_code: 1, err_desc: err }); 
    res.json({error_code: 0, err_desc: null }); 
    }) 
}) 
app.listen('3000', function() { 
    console.log("Running on 3000"); 
}) 
相关问题