2016-09-09 21 views
-2

.NET CoreでMVC5の.Netコアを完全に新しいので、ダウンロードファイルはどのように.NETコアで動作しますか?コードを書き留めてみましたが、エラーがあります。あらかじめヘルパーに感謝します。ASP.NET Core MVCでファイルをダウンロード

コントローラ

public ActionResult Download() 
    { 
     string[] files = Path.Combine(_hostingEnvironment.WebRootPath, "uploads"); 
     for (int i = 0; i < files.Length; i++) 
     { 
      files[i] = Path.GetFileName(files[i]); 
     } 
     ViewBag.Files = files; 
     return View(); 
    } 

    public FileResult DownloadFile(string fileName) 
    { 
     var filepath = Path.Combine(_hostingEnvironment.WebRootPath, "uploads"); 
     return File(filepath, LineMapping.GetMimeMapping(filepath), fileName); 
    } 

ビュー

<h2>Downloads</h2> 
<table> 
<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 { [email protected][i].ToString() })   
     </td> 
    </tr> 
} 

+0

taタグを追加する前に、タグを追加してください。情報セクションにmvc6タグを使用しない理由が記載されています – Tseng

+2

正確なエラーは何ですか? – Jasen

答えて

0

Path.Combineは、ファイルのリストを返さないので、書かれたように、コードにもコンパイルされません。 Modelを参照していますが、モデルを持っていないため、ビューで解析エラーが発生します。また、パラメータImageNameがアクションのパラメータ名と一致しません。あまりにもコードにはいくつかの他の問題(アレイ上Countを使用して - Count()Lengthを使用

私はあなたがこのような何かをしようとしていると思います

コントローラ

public ActionResult Download() 
{ 
    string[] files = Directory.GetFiles(Path.Combine(_hostingEnvironment.WebRootPath, "uploads")); 
    for (int i = 0; i < files.Length; i++) 
    { 
     files[i] = Path.GetFileName(files[i]); 
    } 

    return View(files); 
} 

public FileResult DownloadFile(string fileName) 
{ 
    var filepath = Path.Combine(_hostingEnvironment.WebRootPath, "uploads", fileName); 
    return File(filepath, "application/pdf", fileName); 
} 

見ます。?

<table> 
    <tr> 
     <th>File Name</th> 
     <th>Link</th> 
    </tr> 
    @for (var i = 0; i <= Model.Length - 1; i++) 
    { 
     <tr> 
     <td> 
      @Model[i].ToString() 
     </td> 
     <td> 
      @Html.ActionLink("Download", "DownloadFile", new { fileName = @Model[i].ToString() }) 
     </td> 
     </tr> 
    } 
</table> 
+0

コンパイルエラー - LineMappingにGetMimeMappingの定義が含まれていません – Priyanshu

+0

コピーしたコードがそのコードでした。そこで何をしようとしているのか分かりません。 LineMappingとは何ですか?私が '' UTF-8 ''を置くと、それはうまく動作します –

+0

私はオンラインリソースから見て、折り返しを追加しました。 – Priyanshu

関連する問題