[asp.net mvc]利用controller, action進行下載檔案或是直接於網頁開啟檔案(可以隱藏實際上的檔案在伺服器的路徑)
controller端程式碼:
[OutputCache(NoStore = true, Duration = 0)]
[HttpGet]
public ActionResult FileDownloadOrOpen(string FileName)
{
//session檢查使用者是否登入(不用登入就可下載的話,這段可疑除)
if (Session["UserId"] == null || Session["CompanyCode"] == null)
{
return Content("網頁登入時限已過,請重新登入!");
}
//檢查檔案是否存在
bool isFileExist = System.IO.File.Exists(Server.MapPath("~/Content/pdf/" + FileName));
if(isFileExist)
{
//下面這行是直接將檔案於瀏覽器開啟,若是要下載,就移除這行
Response.AppendHeader("content-disposition", "inline; filename=file.pdf");
//看你要下載的檔案類型是什麼,把application/pdf改成自己要的
return File(Server.MapPath("~/Content/pdf/" + FileName), "application/pdf");
}
else
{
return Content("未經授權的存取!");
}
}
html端程式碼:
<a href="~/MyControllerName/FileDownloadOrOpen?FileName=myFileName" target="_blank" class="btn btn-warning fw-bold"><span>下載檔案或直接開啟</span></a>
用controller搭配action下載或是直接開啟檔案就是這麼簡單囉
如此的作法還可以隱藏實際上的檔案在伺服器的路徑喔
參考資料:
工作經驗