ユニバーサル ファイル ダウンロードに ASP.NET MVC の FileResult を使用する
ASP.NET MVC の FileResult
は、ファイルのダウンロードを処理するための堅牢なソリューションを提供します。 ただし、標準的な例は特定のファイル タイプに焦点を当てていることが多く、さまざまなファイル タイプのダウンロードをどのように管理するかという問題は未解決のままです。この記事ではその課題に取り組みます。
問題: 不明なタイプのファイルをダウンロードする
中心的な問題は、ファイルの種類が事前に定義されていないファイルをダウンロードすることです。 さまざまなファイル拡張子を扱う場合、標準的な方法では困難が生じる可能性があります。
解決策: FileResult
と Octet-Stream MIME タイプの活用
多様なファイルタイプを処理する鍵は、FileResult
クラスの使用と MediaTypeNames.Application.Octet
MIME タイプの指定にあります。この汎用 MIME タイプは、あらゆるファイル タイプに適したオクテット ストリームを示します。
これを実装する方法は次のとおりです:
<code class="language-csharp">public FileResult Download() { byte[] fileBytes = System.IO.File.ReadAllBytes(@"c:\folder\myfile.ext"); string fileName = "myfile.ext"; return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); }</code>
このコード スニペットは次のことを示しています。
fileBytes
: ファイル システムから直接読み取られる、ファイルのバイナリ コンテンツが含まれます。MediaTypeNames.Application.Octet
: ユニバーサル オクテット ストリーム MIME タイプを指定します。fileName
: ダウンロードに必要なファイル名を設定します。ファイルパスと名前の処理の改善
パスの連結とアンダースコアに関する潜在的な問題を回避するために、より堅牢なアプローチとして、ファイルのパスと名前に個別のパラメーターを使用します。
<code class="language-csharp">public FileResult Download(string filePath, string fileName) { byte[] fileBytes = GetFile(filePath); // Helper function to read file bytes return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); } private byte[] GetFile(string filePath) { return System.IO.File.ReadAllBytes(filePath); }</code>
この改訂された方法では、ファイルのパスと名前を明確に分離することで、セキュリティと読みやすさが強化されています。 GetFile
ヘルパー関数はコードの構成を改善します。 このアプローチにより、ASP.NET MVC アプリケーションでファイルのダウンロードを処理するためのより柔軟で安全な方法が提供されます。
以上がFileResult を使用して ASP.NET MVC で任意の種類のファイルをダウンロードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。