1
我試圖構建一個Excel文件上傳器並解析路徑中的數據以存儲它,但數據在從通過$ http服務路由發送的FormData轉換時出現數據丟失。我不知道該怎麼做!如果您有任何這方面的經驗,請幫助!AngularJS將數據從multipartForm指令丟失到路由
HTML視圖:
<form ng-controller="myCtrl">
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" ng-model="myFile.name">
</div>
<div class="form-group" >
<input type="file" file-model="myFile.file"/>
</div>
<button ng-click="Submit()">upload me</button>
</form>
控制器視圖:
myApp.controller('myCtrl', ['$scope', 'multipartForm', function($scope, multipartForm){
$scope.myFile = {};
$scope.Submit = function(){
var uploadUrl = '/upload';
multipartForm.post(uploadUrl, $scope.myFile);
}
}]);
服務觀:
myApp.service('multipartForm', ['$http', function($http){
this.post = function(uploadUrl, data){
var fd = new FormData();
for(var key in data) {
fd.append(key, data[key]);
}
$http.post(uploadUrl, fd, {
transformRequest: angular.indentity,
headers: { 'Content-Type': undefined }
});
}
}])
指令查看:
myApp.directive('fileModel', ['$parse', function($parse){
return {
restrict: 'A',
link: function(scope, element, attrs){
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function(){
scope.$apply(function(){
modelSetter(scope, element[0].files[0]);
})
})
}
}
}])
這是數據不經過的路由視圖。
module.exports = function (app) {
app
.post('/upload', function(req, res){
console.log(req.body);
console.log(req.files);
});
}
Server.js
var express = require('express');
var bodyParser = require('body-parser');
var multer = require('multer');
var upload = multer({ dest: './uploads/'});
var app = express();
// if using body-parser
app.use(bodyParser.json());
app.use(express.static(__dirname + '/client'));
app.use('/node_modules', express.static(__dirname + '/node_modules'));
// if mongoose, require mongoose
//require('./server/config/mongoose.js');
//routes
require('./server/config/routes.js')(app);
app.listen(8000, function() {
console.log('listening on port 8000');
})
謝謝你的提示!我想我只是讓自己變得比我應該更加努力。 – EggSix