摘要:ASP.NET MVC - 實作 ASP.NET MVC 下載檔案功能
接觸 ASP.NET MVC 發現原來 下載檔案 在 MVC 中是很簡單的,廢話不多說以下就來實作嚕...
資料表:
步驟一:建立一個 LINQ to SQL
步驟二:撈取 檔案路徑資料 資料
Code:
public ActionResult Index()
{
MyDataContext db = new MyDataContext();
ViewData["Message"] = "Welcome to ASP.NET MVC!";
IEnumerable<檔案路徑資料> result = from p in db.檔案路徑資料
select p;
return View(result);
}
步驟三:建立 下載檔案 的 ActionResult
Code:
public ActionResult GetFilePath(Guid uid)
{
MyDataContext db = new MyDataContext();
string result = (from p in db.檔案路徑資料
where p.UID.Equals(uid)
select p.FilePath).FirstOrDefault();
if (!string.IsNullOrEmpty(result) && System.IO.File.Exists(Server.MapPath(result)))
return File(System.IO.File.ReadAllBytes(Server.MapPath(result)),
"application/unknown",
HttpUtility.UrlEncode(System.IO.Path.GetFileName(result)));
else
return View();
}
步驟四:在 ASPX 中呈現 檔案路徑資料 的資料
Code:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcApplication1.Models.檔案路徑資料>>" %>
<asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">
Home Page
</asp:Content>
<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
<h2><%= Html.Encode(ViewData["Message"]) %></h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<p>
<%foreach (var item in Model)
{%>
<a href="<%=Url.Action("GetFilePath", "Home", new { uid = item.UID }) %>">按我下載檔案</a>
<%} %>
</p>
</asp:Content>
結果:
參考:
Writing A Custom File Download Action Result For ASP.NET MVC
ASP.NET MVC 檔案上傳下載是很方便的
HttpUtility.UrlEncode 方法 (String)
File.ReadAllBytes 方法