Skip to content

Commit 351c4d9

Browse files
committed
AngularJS Tutorial - Posting Multipart Form data to Server
1 parent 66480ee commit 351c4d9

File tree

11 files changed

+63
-7
lines changed

11 files changed

+63
-7
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,4 @@ Temporary Items
4545
# Dependency directory
4646
node_modules
4747
Public/libs
48+
uploads
Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
myApp.controller('submitController', ['$scope', function($scope){
2-
3-
1+
myApp.controller('submitController', ['$scope', 'multipartForm', function($scope, multipartForm){
2+
$scope.customer = {};
3+
$scope.Submit = function(){
4+
var uploadUrl = '/upload';
5+
multipartForm.post(uploadUrl, $scope.customer);
6+
}
47
}]);

Public/js/directives/fileModel.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
myApp.directive('fileModel', ['$parse', function($parse){
2+
return {
3+
restrict: 'A',
4+
link: function(scope, element, attrs){
5+
var model = $parse(attrs.fileModel);
6+
var modelSetter = model.assign;
7+
8+
element.bind('change', function(){
9+
scope.$apply(function(){
10+
modelSetter(scope, element[0].files[0]);
11+
})
12+
})
13+
}
14+
}
15+
}])

Public/js/services/multipartForm.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
myApp.service('multipartForm', ['$http', function($http){
2+
this.post = function(uploadUrl, data){
3+
var fd = new FormData();
4+
for(var key in data)
5+
fd.append(key, data[key]);
6+
$http.post(uploadUrl, fd, {
7+
transformRequest: angular.indentity,
8+
headers: { 'Content-Type': undefined }
9+
});
10+
}
11+
}])

Public/partials/submit.html

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,17 @@
1-
Submit Page.
1+
<form>
2+
<div class="form-group">
3+
<label for="name">Full Name</label>
4+
<input type="text" class="form-control" id="name" placeholder="Enter name" ng-model="customer.name">
5+
</div>
6+
<div class="form-group">
7+
<label for="email">Email address</label>
8+
<input type="email" class="form-control" id="email" placeholder="Enter email" ng-model="customer.email">
9+
</div>
10+
<div class="form-group">
11+
<label for="exampleInputFile">Avatar</label>
12+
<input type="file" id="exampleInputFile" file-model="customer.file">
13+
</div>
14+
<button type="submit" class="btn btn-default" ng-click="Submit()">Submit</button>
15+
</form>
16+
17+
{{customer}}

app/routes/secure.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ module.exports = function(router){
2929
});
3030
});
3131

32+
router.post('/upload', function(req, res){
33+
console.log(req.body);
34+
console.log(req.files);
35+
res.json({success: true});
36+
});
37+
3238
router.get('/*', function(req, res){
3339
res.redirect('/home');
3440
});

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"express-session": "^1.11.1",
1616
"mongoose": "^4.0.1",
1717
"morgan": "^1.5.2",
18+
"multer": "^0.1.8",
1819
"passport": "^0.2.1",
1920
"passport-facebook": "^2.0.0",
2021
"passport-google-oauth": "^0.2.0",

server.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ var session = require('express-session');
1111
var morgan = require('morgan');
1212
var mongoose = require('mongoose');
1313
var bodyParser = require('body-parser');
14+
var multer = require('multer');
1415
var passport = require('passport');
1516
var flash = require('connect-flash');
1617
var MongoStore = require('connect-mongo')(session);
@@ -21,7 +22,7 @@ mongoose.connect(configDB.url);
2122
require('./config/passport')(passport);
2223

2324
app.use(express.static(__dirname + '/public'));
24-
25+
app.use(multer({dest: './uploads/'}));
2526
app.use(morgan('dev'));
2627
app.use(cookieParser());
2728
app.use(bodyParser.urlencoded({extended: false}));
2.52 MB
Loading
589 KB
Loading

0 commit comments

Comments
 (0)