1

ユーザーがコンテンツをアップロードできるようにする簡単なアプリを開発しています。Express が受け入れるファイル サイズを制限したい。私は私が使用できることを知っています

app.use(express.limit('2mb'));

しかし、制限を動的に変更したい。特定のユーザーには、より高い制限があります。

最善の解決策は、最初にヘッダーをチェックし、content-lengthファイル サイズが制限を下回っている場合にアップロードの解析を開始することですが、Express は自動的にファイルのアップロードをディスク (/tmp ディレクトリ) に保存します。したがって、誰かが 1 GB のファイルを送信すると、許可したくない場合でも、このファイルが解析されてディスクに保存されます。

前もって感謝します!

4

2 に答える 2

4

bodyParser() を追加する前に limit() を追加します。たとえば、次のようになります。

app.use(express.limit(100000));
app.use(express.bodyParser({uploadDir: '/tmp', keepExtensions:true}));

この方法では、アップロードされたファイルが大きすぎる場合に /tmp に保存されません。

于 2013-02-19T19:30:16.443 に答える
1

Express は基本的に connect の limit() ミドルウェアを使用します。

したがって、デフォルトの limit() を使用する代わりに、独自のミドルウェアを作成することをお勧めします。

ここで limit() のソースコードを見ることから始めることができますhttps://github.com/senchalabs/connect/blob/2.24.2/lib/middleware/limit.js#L40

于 2012-05-14T03:13:38.257 に答える