Hello I am working with file upload concept In MEAN Stack.But file is not
uploading.I used the file-model directives.
here is my angular controller.js file function.
app.controller("usercontroller",function($scope,$http, $localStorage,$location,flash){
$scope.adduser = function(message)
{
$http({
method:"POST",
url:'api/adduser',
data:{name:$scope.name,email:$scope.email,password:$scope.password,address:$scope.address,sex:$scope.sex,file:$scope.file},
transformRequest:angular.identity,
headers:{'Content-Type':undefined }
}).then(function successCallback(response) {
if(response.data.error){
$scope.error = response.data.error;
}else{
$scope.Blog=response.data;
$localStorage.dd=$scope.Blog;
flash.setMessage(message);
$location.path('/allusers');
}
//console.log(response);
}, function errorCallback(response) {
alert("data is not comming here");
});
}
});
I used the directive same file controller.js above to the controller.
app.directive('fileModel', 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(){
if (attrs.multiple) {
modelSetter(scope, element[0].files);
}
else {
modelSetter(scope, element[0].files[0]);
}
});
});
}
};
});
input type of file is
<div class="form-group">
<label for="Phone_no" class="col-sm-3">ImageUpload</label>
<div class="col-sm-4 @if($errors->has('Phone_no')) has-error @endif">
<input class="form-control input-sm" name="files" file-model="file" type="file" >
</div>
</div>
I used the storage function into the api file. var storage = multer.diskStorage({
destination:function(req,file,cb){
cb(null,'../public/uploads/')
},
filename:function(req,file,cb){
console.log('file',file);
var c = mime.extension(file.mimetype);
console.log(c);
//debugger;
cb(null,Date.now()+'.'+ mime.extension(file.mimetype));
}
});
var upload = multer({ storage: storage });
and then in api.js file
router.post('/adduser',userController.adduser);
Here is the userController.js file
module.exports.adduser = function (req, res)
{
var user = new Usermodel();
user.name = req.body.name;
user.email = req.body.email;
user.password = req.body.password;
user.address = req.body.address;
user.sex = req.body.sex;
console.log(req.file.filename);
user.save(function (err, data) {
if (err)
{
//console.log(err);
res.send(err);
} else
{
//console.log("valueEnterd");
res.send(data);
}
})
};
this line is giving error
console.log(req.file.filename);
and when I see the
console.log($scope.file);
in the angular controller.js file
the result is like
lastModified:1458666536337
lastModifiedDate:Tue Mar 22 2016 22:38:56 GMT+0530 (India Standard Time)
name:"shahzad Qureshi.jpg"
size:81107
type:"image/jpeg"
webkitRelativePath:""
__proto__:File