2017-09-12 23 views
1

ファイルは私のアプリケーションフォルダApp_Dataに保存されています。ダウンロードすると「ダウンロード」という名前でファイルがダウンロードされます。ファイルタイプはFileです。元の名前と正しい拡張子でファイルをダウンロードします。どんな助け?ファイルが拡張子なしでダウンロードされている理由


public ActionResult DownloadsFile() 
    { 
     var dir = new System.IO.DirectoryInfo(Server.MapPath("~/App_Data/Files")); 
     System.IO.FileInfo[] fileNames = dir.GetFiles("*.*"); 
     List<string> items = new List<string>(); 

     foreach (var file in fileNames) 
     { 
      items.Add(file.Name); 
     } 

     return View(items); 
    } 


<div class="st-pusher well" style="overflow:scroll;" id="content"> 
<br><h3 style="margin-left:10px; text-align:center;">Download Files</h3> 
<div style="border: 1px solid silver; margin:10px 10px 0px 10px; padding: 10px; border-radius: 4px; background-color:white;"> 
    <table style="width:100%;" class="table table-bordered"> 
     <tr> 
      <th>File Name</th> 
      <th>Link</th> 
     </tr> 
     @for (var i = 0; i <= Model.Count - 1; i++) 
     { 
      <tr> 
       <td> 
        @Model[i].ToString() 
       </td> 
       <td> 
        @Html.ActionLink("Download", "Download", new { FileName = @Model[i].ToString() }) 
       </td> 
      </tr> 
     } 
    </table> 
</div> 


public FileResult Download(string FileName) 
    { 
     return new FilePathResult("~/App_Data/Files/" + FileName, System.Net.Mime.MediaTypeNames.Application.Octet); 
    } 
+0

https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Mvc/FileResult.cs#L25 –

+0

野生の推測:ローカルで「エクステンションを隠す」ようにしましたか? –

+0

「拡張子を隠す」はローカルではオンになっていません@HansKesting – faraz

答えて

3

あなたはFilePathResultFileDownloadNameを設定されていませんので。

あなたはおそらくやりたいことはこれです:

return new FilePathResult("~/App_Data/Files/" + FileName, System.Net.Mime.MediaTypeNames.Application.Octet) 
{ 
    FileDownloadName = "SetTheFileName" 
}; 

FileDownloadNameプロパティは、応答の内容-dispositionヘッダーを設定します、そしてそれは、ブラウザのファイルの保存]ダイアログボックスで使用されます

+0

それは私のために働いていました。ありがとう ! – faraz

関連する問題