Asp.net core 在ASP.NET核心MVC中下载文件

Asp.net core 在ASP.NET核心MVC中下载文件,asp.net-core,asp.net-core-mvc,Asp.net Core,Asp.net Core Mvc,MVC5中全新的.NETCore,那么下载文件如何与.NETCore配合使用呢?我试着写下代码,但它有错误。提前感谢帮手们 控制器 public ActionResult Download() { string[] files = Path.Combine(_hostingEnvironment.WebRootPath, "uploads"); for (int i = 0; i < files.Length; i++) {

MVC5中全新的.NETCore,那么下载文件如何与.NETCore配合使用呢?我试着写下代码,但它有错误。提前感谢帮手们

控制器

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);
    }
public ActionResult下载()
{
string[]files=Path.Combine(_hostingEnvironment.WebRootPath,“uploads”);
for(int i=0;i
看法

下载
文件名
链接

@为了(var i=0;i编写的代码甚至不会编译,因为
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);
}
public ActionResult下载()
{
string[]files=Directory.GetFiles(Path.Combine(_hostingEnvironment.WebRootPath,“uploads”);
for(int i=0;i
查看

<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>

文件名
链接

@为了(var i=0;在添加标记之前,请阅读标记说明。信息部分说明了为什么不应使用mvc6标记。您实际遇到了哪些错误?编译错误:-LineMapping不包含我复制的代码GetMimemApping的定义。不确定您试图在那里做什么。LineMapping是什么?如果我输入<代码>“UTF-8”
它工作得很好我从一个在线资源中看到并添加了linemapping,我完全不知道它实际上是做什么的。对不起,我使用的不是UTF-8,而是
text/plain
。这些文件是什么类型的?使用适当的MIME类型,而不是调用
linemapping
我必须下载上传的.pdf文件我有点迷失了用.net内核实现这种逻辑。
<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>