kianajoo
جمعه 11 دی 1394, 22:26 عصر
درود
من با angularjs و node.js و multer میخوام یه فرم رو که چند تا فیلد تکست و یه فایل هست رو به سرور نود ارسال کنم و تویه سرور چک کنم که مقدار فیلدهای تکست اگه خالی بود فایل آپلود نشه...
ولی توی multer اول فایل رو آپلود میکنه بعد تازه میشه تکست فیلدهارو چک کرد!!!!
$scope.submit = function(){ //function to call on form submit
if ($scope.add_news.file.$valid && $scope.file) { //check if from is valid
$scope.upload($scope.file); //call upload function
}else{
$scope.upload(null);
}
}
$scope.upload = function (file) {
if($scope.news !="" && num_object($scope.news,3) ){
Upload.upload({
url: '/form_edit_news', //webAPI exposed to upload the file
data:{file:file,myDate:$scope.news} //pass file as data, should be user ng-model
}).then(function (resp) { //upload function returns a promise
console.log(resp);
if(resp.data.status){ //validate success
$scope.message = resp.data.msg;
} else {
$scope.message = resp.data.msg;
}
}, function (resp) { //catch error
console.log('Error status: ' + resp.status);
}, function (evt) {
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
$scope.progress = 'progress: ' + progressPercentage + '% '; // capture upload progress
});
}else{
$scope.message = 'لطفا همه گزینه ها را وارد کنید!!!';
}
};
و سمت سرور
var storage = multer.diskStorage({ //multers disk storage settings
destination: function (req, file, cb) {
cb(null, __dirname + '/static/uploads/');
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1]);
}
});
var upload = multer({ //multer settings
storage: storage,
limits: {
fileSize: 256 * 1024 * 1024
},
fileFilter: function(req, file, cb) {
if(file.mimetype == 'image/jpeg'){
cb(null, true);
}else{
cb(null, false);
}
}
}).single('file');
app.post('/form_edit_news', upload.single('file'), function (req, res, next) {
// req.file is the `avatar` file
// req.body will hold the text fields, if there were any
//اینجا اول فایل آپلود میشه...
//اینجا چطوری اول فیلدهامو چک کنم قبل از آپلود؟؟؟؟؟!!!
});
من با angularjs و node.js و multer میخوام یه فرم رو که چند تا فیلد تکست و یه فایل هست رو به سرور نود ارسال کنم و تویه سرور چک کنم که مقدار فیلدهای تکست اگه خالی بود فایل آپلود نشه...
ولی توی multer اول فایل رو آپلود میکنه بعد تازه میشه تکست فیلدهارو چک کرد!!!!
$scope.submit = function(){ //function to call on form submit
if ($scope.add_news.file.$valid && $scope.file) { //check if from is valid
$scope.upload($scope.file); //call upload function
}else{
$scope.upload(null);
}
}
$scope.upload = function (file) {
if($scope.news !="" && num_object($scope.news,3) ){
Upload.upload({
url: '/form_edit_news', //webAPI exposed to upload the file
data:{file:file,myDate:$scope.news} //pass file as data, should be user ng-model
}).then(function (resp) { //upload function returns a promise
console.log(resp);
if(resp.data.status){ //validate success
$scope.message = resp.data.msg;
} else {
$scope.message = resp.data.msg;
}
}, function (resp) { //catch error
console.log('Error status: ' + resp.status);
}, function (evt) {
var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
$scope.progress = 'progress: ' + progressPercentage + '% '; // capture upload progress
});
}else{
$scope.message = 'لطفا همه گزینه ها را وارد کنید!!!';
}
};
و سمت سرور
var storage = multer.diskStorage({ //multers disk storage settings
destination: function (req, file, cb) {
cb(null, __dirname + '/static/uploads/');
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1]);
}
});
var upload = multer({ //multer settings
storage: storage,
limits: {
fileSize: 256 * 1024 * 1024
},
fileFilter: function(req, file, cb) {
if(file.mimetype == 'image/jpeg'){
cb(null, true);
}else{
cb(null, false);
}
}
}).single('file');
app.post('/form_edit_news', upload.single('file'), function (req, res, next) {
// req.file is the `avatar` file
// req.body will hold the text fields, if there were any
//اینجا اول فایل آپلود میشه...
//اینجا چطوری اول فیلدهامو چک کنم قبل از آپلود؟؟؟؟؟!!!
});