2016-09-26 5 views
1

私は検証のためにexpress-validatorを使用しています。私のコントローラーには、新しい写真をデータベースに追加する方法があります。ここに私のコードは次のとおりです。Express - エクスプレスバリデータでファイル入力を検証する方法

function createPicture(req, res) { 

req.checkBody('title', `The title can't be empty.`).notEmpty(); 
req.checkBody('image', 'You must select an image.').notEmpty(); 

let errors = req.validationErrors(); 

if (errors) { 
    res.json({errors: errors}); 
} else { ... } 

コードは、タイトルフィールドのために、私がイメージを選択するか、いない場合は関係なく動作します - 私はまだそれについての検証エラーを取得します。ファイル入力を検証するにはどうすればよいですか?私はそれが必要とされるだけです。

答えて

2

私は同じ問題を抱えていた急行-バリデータだけあなたが表現する、カスタムバリデータを記述する必要があります文字列

req.checkBody('title', 'The title can't be empty.').notEmpty();

req.checkBody('image', 'You must select an image.').notEmpty();

を検証するため、以下のコードは動作しません。 -validatorはこれを許可します。これは1つの例です。

//requiring the validator 
var expressValidator = require('express-validator'); 
//the app use part 
app.use(expressValidator({ 
customValidators: { 
    isImage: function(value, filename) { 

     var extension = (path.extname(filename)).toLowerCase(); 
     switch (extension) { 
      case '.jpg': 
       return '.jpg'; 
      case '.jpeg': 
       return '.jpeg'; 
      case '.png': 
       return '.png'; 
      default: 
       return false; 
     } 
    } 
}})); 
最後に、カスタムバリデータを使用する

restLogo = typeof req.files['rest_logo'] !== "undefined" ? req.files['rest_logo'][0].filename : ''; 

は未定義のエラーをスローしないと確信して空のファイルを作成するために行う、最初にこれをカスタムバリデータを使用するには、あなたの質問のための

req.checkBody('rest_logo', 'Restaurant Logo - Please upload an image Jpeg, Png or Gif').isImage(restLogo); 

おかげでこれを願っています誰かを助けるでしょう

+0

これは以前のことでしたが、私もカスタムソリューションのために行きました。答えをありがとう!私はカスタムバリデーターにこのコードを追加しますので、エクスプレスバリデーターで簡単にファイル入力を検証できます。 – Codearts

関連する問題