1

https://github.com/dandean/express-formを使用していますexpress-form

タイプの入力を検証する機能はありfileますか? 私は特にrequire、誰かがファイルをアップロードすることを望んでいます。

ライナスのために編集:)

私はもう試した: field("pdf").required("pdf", "You must select a file to upload.")

req.body.pdf問題は、これがnotを探しているためreq.files.pdf、検証が失敗したと常に考えていることです。

編集/作業コード:Linusの回答に基づいて機能させるために私がしたこと。

dataSourcesパラメータを構成する必要があっただけでなく、フィールドのsizeプロパティを確認する必要もありrequiredました。ファイル入力が空であっても、それはまだ存在する (メタデータなど) ため、フィールドで実行するだけでは十分ではありません。その代わりに、 が 0 より大きいことを確認するカスタム検証関数を実行しますpdf.size。私のコードでは、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."))
4

1 に答える 1

1

READMEから:

Express Form にはさまざまな構成オプションがありますが、典型的な Express アプリケーションに適したデフォルトを目指しています。

...

dataSources (Array): データのフィルタリングおよび検証時にデータ ソースとして使用する Express リクエスト プロパティの配列。デフォルト: ["body", "query", "params"].

したがって、これらの行に沿った何かがうまくいくはずです:

var form = require('express-form')
           .configure({dataSources: ['body', 'files', 'query', 'params']});
于 2012-06-16T10:08:29.153 に答える