نمایش نتایج 1 تا 8 از 8

نام تاپیک: چک کردن فیلد ها قبل از آپلود فایل در multer

  1. #1
    کاربر تازه وارد آواتار kianajoo
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بیکینی باتم
    پست
    63

    Red face چک کردن فیلد ها قبل از آپلود فایل در multer

    درود
    من با 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
    //اینجا اول فایل آپلود میشه...
    //اینجا چطوری اول فیلدهامو چک کنم قبل از آپلود؟؟؟؟؟!!!
    });

  2. #2

    نقل قول: چک کردن فیلد ها قبل از آپلود فایل در multer

    به نظر من قبل از اینکه تنظیمات Multer رو بنویسید، یه متد داشته باشید که چک کردن فیلد رو انجام بده، مثل این:

    checkField: function(req, res, next) {   //Check your fields in here!
    },


    بعد Router اینطوری میشه:

    app.post('/form_edit_news', upload.single('file'), upload.checkField, function(req, res){});

  3. #3
    کاربر تازه وارد آواتار kianajoo
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بیکینی باتم
    پست
    63

    نقل قول: چک کردن فیلد ها قبل از آپلود فایل در multer

    تشکر دوست عزیز...
    قبلا توی جستجوهام به این روش رسیده بودم
    http://stackoverflow.com/questions/2...re-file-upload
    ولی نمیدونم checkField رو گجا باید بنویسم!!!

  4. #4

    نقل قول: چک کردن فیلد ها قبل از آپلود فایل در multer

    گفتم دیگه، شما checkField رو قبل از خط 11 سمت سرور بنویسید مثلاً. ولی خب نهایتاً باید توی دستور Router، بعد از آرگومان مربوط به آپلود، آرگومان checkField رو (همونطور که براتون نوشتم) انجام بدین.

  5. #5
    کاربر تازه وارد آواتار kianajoo
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بیکینی باتم
    پست
    63

    نقل قول: چک کردن فیلد ها قبل از آپلود فایل در multer

    بازم تشکر....
    منم الان دقیقا مشکلم اینجاست!!
    که نمیتونم checkfiel رو بنویسم!
    کل نت رو شخم زدم چیزی پیدا نکردم...نمونه کدی هم ندیدم...
    یعنی هیچ کس تویه دنیا تا حالا نخواسته قبل از آپلود فایل فیلدهای دیگشو چک کنه؟!!!!!!!!!

  6. #6

    نقل قول: چک کردن فیلد ها قبل از آپلود فایل در multer

    امیدوارم منظورتون رو درست متوجه شده باشم؛ چون راه برای اعتبارسنجی (خصوصاً اعتبارسنجی ساده ای که شما نیاز دارید) خیلی خیلی زیاده.

    اگه این اعتبارسنجی رو نیاز دارید که به صورت Client-Side انجام بدین، که خب Angular هست و ngMessage هاش که کارو فوق العاده راحت کرده. اگه خواستید این رو بهتون میگم چطوری انجام بدین (گمان می کنم خودتون بلد باشید).

    اما اگه نیاز دارید که اعتبارسنجی Server-Side باشه (که فکر می کنم چنین چیزی مدنظرتون هست)، مجدداً راه های زیادی هست:

    1. بسته به شکلی که فرم رو نوشته باشید، میتونید ماژول jQuery رو برای پروژۀ Node نصب کنید و به راحتی در محیط Server-Side بحث Validation رو با کدهای jQuery انجام بدین (اگه خواستین در این مورد توضیحات بیشتر میدم).

    2. ماژول Validate.js هست که مخصوص این کار هست: http://validatejs.org/

    3. یه راه اساسی تر وجود داره که فکر می کنم مناسب تر کار شما باشه؛ مفصلاً اینجا در موردش توضیحات داده شده: http://www.sitepoint.com/creating-an...ms-in-node-js/ (اگه جاییش رو متوجه نشدید، بگید تا توضیح بدم در موردش)

    4. یه مقالۀ خوب دیگه هم هست که چون دارید از Angular و Express استفاده می کنید، میتونید مطالعه ش کنید: https://thecodebarbarian.wordpress.c...ing-angularjs/
    به نظرم پاسختون به قطع یقین باید دیگه داخل این یکی مقاله باشه. این رو هم اگه خواستید براتون توضیح میدم، گرچه سبک قدیمی ای داره، ولی ساده و مطمئن هست و من برای اولین پروژه م که با Node و Angular می نوشتم ازش استفاده کردم، ولی خب الان با وجود این همه ماژولی که برای Node نوشته شده، دیگه لازم نمی بینم از این روش استفاده کنم.

    - اگه بحث آپلود رو نداشتید هم که خیلی راحت میشد از Callback مربوط به Route اعتبارسنجی رو انجام بدین. (این رو هم اگه خواستید براتون توضیح میدم - ولی گمان می کنم خودتون بدونید و خب راه حلی هم برای شما به حساب نمیاد. فقط گفتم که این مورد رو هم آورده باشم داخل راه حل ها :دی)

    پ.ن: از خود Express هم تا حدودی میشه برای Validation های این شکلی استفاده کرد. ولی به درد کار شما نمیخوره. یعنی بعید میدونم که بشه ازش قبل از دستور app.post اعتبارسنجی رو بگیریم. معمولاً از Callback این دستور، از آرگومان Request میشه اعتبارسنجی رو روی elements فرم انجام داد که همونطور که گفتم به درد کار شما نمیخوره.

  7. #7
    کاربر تازه وارد آواتار kianajoo
    تاریخ عضویت
    آذر 1390
    محل زندگی
    بیکینی باتم
    پست
    63

    نقل قول: چک کردن فیلد ها قبل از آپلود فایل در multer

    درود...
    درست متوجه شدین...اعتبار سنجی سمت سرور...
    والا من تازه کارم و از این لینکهایی که زحمت کشیدی و دادی چیزی سر در نیاوردم!!!
    من از این آموزش برای آپلود فایل استفاده کردم
    http://code.ciphertrick.com/2015/12/...js-and-nodejs/
    و فقط یه مقدار دیگه به فیلد فایل اضافه کردم
    data:{file:file,myDate:$scope.news} //pass file as data, should be user ng-model

    فقط میخوام ببینم که myDate من خالی نباشه همین...(value مهم نیست که چی باشه...)
    اگه خالی نبود اون وقت فایل آپلود بشه...

  8. #8

    نقل قول: چک کردن فیلد ها قبل از آپلود فایل در multer

    میخواید این اعتبارسنجی با کاربر هم Interaction (تعامل) داشته باشه؟ یعنی به کاربر پیامی هم داده بشه یا خیر؟

    چون اگه فقط میخواید این اعتبارسنجی رو داخل سرور انجام بدین، که خیلی راحت میتونید صحیح بودن $scope.news رو بررسی کنید؛ یعنی به این شکل:

    if($scope.news) {    myData:$scope.news} else {    console.log("ERROR");}


    یا نمونۀ کوتاهش:

    $scope.news ? myData:$scope.news : '//EMPTY VALUE';


    در این حالت اگه مقدار $scope.news یکی از این حالات باشه، مقدار برگشتی False خواهد بود:

    - Null، Undefined، NaN، 0، false و رشتۀ خالی

    یا میتونید کد رو تغییر ندید، و مثلاً داخل همون متد checkField که در قسمت های قبلی در موردش صحبت کردیم، این بررسی رو به این شکل انجام بدین:

    checkField: function(req, res, next) {
    if(data.myData.length == 0) { // ERROR FOR NOT ENTERING ANY VALUE }
    },


    اگه جواب نگرفتید، بهم بگید تا بازم بهتون راه حل بگم. چون همونطور که گفتم برای این کار بی نهایت راه حل هست :)

    پ.ن: این مواردی که گفتم هم به شکلی هستند که قبل از آپلود بررسی رو انجام میدن. در حالت اول، وقتی داده داره داخل اون Property ذخیره میشه، چک کردن رو هم انجام میده؛ بنابراین قبل از آپلود هست. حالت دوم هم که در موردش صحبت کرده بودیم. شما این اعتبارسنجی رو با اون متد انجام میدین، بعد هم این متد رو به همون شکلی که خدمتتون در پاسخ های قبلی گفته بودم داخل دستور مربوط به Route میارید.
    آخرین ویرایش به وسیله Patira : شنبه 12 دی 1394 در 23:41 عصر

تاپیک های مشابه

  1. سوال: چک کردن وجود فایل قبل از آپلود فایل توسط control file upload
    نوشته شده توسط mis.shima در بخش ASP.NET Web Forms
    پاسخ: 2
    آخرین پست: یک شنبه 12 بهمن 1393, 07:53 صبح
  2. سوال: چک کردن سایز عکس قبل از upload ؟
    نوشته شده توسط Modifier در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: یک شنبه 27 تیر 1389, 14:55 عصر
  3. به دست آوردن مقدار فیلد ها قبل از اعمال به روز رسانی
    نوشته شده توسط shahinghorbani در بخش C#‎‎
    پاسخ: 8
    آخرین پست: سه شنبه 14 خرداد 1387, 12:54 عصر
  4. چک کردن فیلد ها
    نوشته شده توسط majoran در بخش PHP
    پاسخ: 1
    آخرین پست: چهارشنبه 14 فروردین 1387, 18:28 عصر
  5. چک کردن فونت کامپیوتر قبل از لود شدن
    نوشته شده توسط samansad در بخش طراحی وب (Web Design)
    پاسخ: 30
    آخرین پست: پنج شنبه 13 دی 1386, 17:23 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •