本篇内容介绍了“怎么使用ASP.NET MVC实现文件下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
点击一个链接,把该文件的Id传递给控制器方法,遍历文件夹所有文件,根据ID找到对应文件,并返回FileResult类型。
namespace MvcApplication1.Models
{
public class FileForDownload
{
public int Id { get; set; }
public string Name { get; set; }
public string Path { get; set; }
}
}
写一个针对文件的帮助类,遍历指定文件夹的所有文件,返回FileForDownload集合类型。在项目根目录下创建Files文件夹,存放下载文件。
using System.Collections.Generic;
using System.IO;
using System.Web.Hosting;
using MvcApplication1.Models;
namespace MvcApplication1.Helper
{
public class FileHelper
{
public List<FileForDownload> GetFiles()
{
List<FileForDownload> result = new List<FileForDownload>();
DirectoryInfo dirInfo = new DirectoryInfo(HostingEnvironment.MapPath("~/Files"));
int i = 0;
foreach (var item in dirInfo.GetFiles())
{
result.Add(new FileForDownload()
{
Id = i + 1,
Name = item.Name,
Path = dirInfo.FullName + @"\" + item.Name
});
i++;
}
return result;
}
}
}
using System;
using System.Linq;
using System.Web.Mvc;
using MvcApplication1.Helper;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
private FileHelper helper;
public HomeController()
{
helper = new FileHelper();
}
public ActionResult Index()
{
var files = helper.GetFiles();
return View(files);
}
public FileResult DownloadFile(string id)
{
var fId = Convert.ToInt32(id);
var files = helper.GetFiles();
string fileName = (from f in files
where f.Id == fId
select f.Path).FirstOrDefault();
string contentType = "application/pdf";
return File(fileName, contentType, "Report.pdf");
}
}
}
@model IEnumerable<MvcApplication1.Models.FileForDownload>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<table>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Id)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@Html.ActionLink("下载", "DownloadFile", new { id = item.Id })
</td>
</tr>
}
</table>
“怎么使用ASP.NET MVC实现文件下载”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。