7

Express を使用するノード アプリがあります。このアプリでは、ポスト メッセージのzip ファイルを介して送信する必要があります(例: 郵便配達員からノード サーバーへ)。現在、次のようなボディ パーサーを使用していますが、これで問題ないのでしょうか?

app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.use(bodyParser.text({
    type: 'application/text-enriched',
    limit: '10mb'
}));

ところで、これは機能していますが、正しく使用できるのだろうか...

4

1 に答える 1

5

bodyParse.text()stringタイプボディ用です。ドキュメントから:

bodyParser.text(オプション)

すべての本文を文字列として解析するミドルウェアを返します...

バイナリ データ (zip ファイルなど) をアップロードしているため、 を使用bodyParser.text()するとバッファ本体がutf-8stringに変換されます。そのため、バイナリ ファイルの一部のデータが失われ、zip ファイルが読み取れなくなる可能性があります。

バイナリ ファイルの場合はbodyParser.raw()、 を使用します。これにより、バッファーが提供req.bodyされ、そのバッファーをファイルに安全に保存できます。

app.use(bodyParser.raw({
    type: 'application/octet-stream',
    limit: '10mb'
}));

ファイルのアップロードについては、コンテンツ タイプmulterで機能するを実際に確認する必要があります。multipart/form-data

于 2015-10-12T11:39:48.283 に答える