MVC アクション メソッドから FilePathResult を返すと、次のいずれかが発生します (重要な場合、結果が指すファイルが非常に大きいと仮定します)。
- ファイル全体がサーバーのメモリにロードされ、クライアントに送信されます。
- ファイルは何らかの方法でクライアントにストリーミングされ、サーバーのメモリに完全に読み込まれることはありません。
- 他の何か。
答えが 1 の場合、別のタイプの結果を返すことで、代わりに 2 のようにファイルを送信することは可能ですか?
MVC アクション メソッドから FilePathResult を返すと、次のいずれかが発生します (重要な場合、結果が指すファイルが非常に大きいと仮定します)。
答えが 1 の場合、別のタイプの結果を返すことで、代わりに 2 のようにファイルを送信することは可能ですか?
UPDATE: response.TransmitFileFilePathResult
を使用します。これは、「指定されたファイルをメモリにバッファリングせずに、HTTP 応答出力ストリームに直接書き込みます。」MVC のソース コードは次のとおりです。
FileStreamResult
クラスを使用してデータをストリームバックできます。
return new FileStreamResult(stream, "application/pdf")
{
result.FileDownloadName = "somefile.pdf";
};
または、次のようにファイルにリダイレクトできます。
return Redirect("somefile.pdf");