[asp.net mvc]利用controller, action進行下載檔案或是直接於網頁開啟檔案(可以隱藏實際上的檔案在伺服器的路徑)

  • 579
  • 0
  • 2022-10-14

[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下載或是直接開啟檔案就是這麼簡單囉
如此的作法還可以隱藏實際上的檔案在伺服器的路徑喔

 

參考資料:
工作經驗