ディレクトリ構造をフラットに保つには、GUIDを追加してファイルを保存します(すでに行ったように)。ダウンロードハンドラ(コントローラアクションメソッド)で、まずファイル名からGUIDを削除して、GUIDベースのファイル名を元のファイル名に変換します。次に、FileContentResult
クラスを使用してファイルを転送します。 FileDownloadName
プロパティを設定して、転送するファイルのファイル名を指定することができます。実際にはFileDownloadName
プロパティはContent-Dispositionヘッダーをフードの下に設定します。ここで
は、小さなコード例(ダウンロードのコントローラクラスのアクションメソッド)です。
string fileToDownload = "test.jpg_4274B9D4-9084-441C-9617-EAD03CC9F47F";
string originalFileName = fileToDownload.Substring(0, fileToDownload.LastIndexOf('_'));
FileContentResult result = new FileContentResult(
System.IO.File.ReadAllBytes(Server.MapPath(String.Format("~/files/{0}", fileToDownload))), "application/binary");
result.FileDownloadName = originalFileName; // Sets the Content-Disposition header
return result;
ファイルをダウンロードするユーザーは、元のファイル名でファイルを保存/開くように要求されます。
希望、これは役立ちます。