2012-06-13 64 views
1

我使用express-formhttps://github.com/dandean/express-form可以使用表單驗證輸入類型的'文件'是否需要?

是否有驗證類型file的輸入的能力嗎?我特意要require有人上傳文件。

編輯萊納斯:)

我已經試過: field("pdf").required("pdf", "You must select a file to upload.")

的問題是,這是尋找req.body.pdfreq.files.pdf,所以它始終認爲驗證失敗。

編輯/工作代碼:根據Linus的回答,我做了什麼來完成它的工作。

我不僅需要配置dataSources PARAM,我還需要檢查該字段的size財產只是在場上做了required是不夠的,因爲即使一個文件輸入是空的,它仍然存在(元數據等)。相反,我做了一個自定義驗證函數,確保pdf.size大於0.在我的代碼中,我還檢查了是否有title。我留在這裏以防萬一有人想知道如何將多個驗證串聯起來。

var form = require('express-form') 
    .configure({dataSources: ['body', 'files', 'query', 'params']}); 

form(
    field("pdf.size").custom(function(value) { 
    if (value <= "0") { 
     throw new Error("You must select a file to upload."); 
    } 
    }) 
, field("title").trim().required("title", "Please enter a title for your PDF.")) 
+0

http://whathaveyoutried.com/? –

+2

@LinusGThiel好點,編輯補充。 – k00k

回答

1

the README

Express外形具有各種配置選項,但目的是爲合理的缺省值的典型Express應用程序。

...

數據源(陣列):快速請求屬性的數組濾波和驗證數據時作爲數據源使用。默認:["body", "query", "params"]

所以這些方針的東西應該做的伎倆:

var form = require('express-form') 
      .configure({dataSources: ['body', 'files', 'query', 'params']}); 
+0

謝謝!不知道我是如何錯過的。有一點要補充。我將在我的原始問題中添加一個編輯,以說明我必須做些什麼才能使其發揮作用。 – k00k

相關問題