原本我們的檔案 是直接給對方看檔案路徑
所以只需要在
typeScript 內加上
window.location = filePath;
這樣的方式就是,會另開新的網頁然後URL會直接Show出檔案路徑
並顯示該檔案的檔案內容
但今天需要改成,前端不能再顯示,並且點下後直接下載檔案
其實就是讓前端<a> 的 href 動態加進去,然後再去後端處理
filePath = `${Url.GetRootPath()}/File/DownloadFile?year=111&prjId=testID&fileName=test`;
<a id="test" href="#" target="_blank" target="main">AttDesc</a>
$(`#test`).on("click", function () {
//window.location = filePath; //如果要預覽
$(`#test`).attr("href", filePath); // 檔案下載 走後端 File Controller DownloadFile Action
})
後端程式
public ActionResult DownloadFile(string year,string prjId,string fileName)
{
string path = Server.MapPath($"~/{year}/{prjId}/{fileName}");
//找檔案
try
{
FileStream stream = new FileStream(path, FileMode.Open,FileAccess.Read,FileShare.Read);
return File(stream, "application/octet-stream", fileName); //MME 格式 可上網查 此為通用設定
}
catch (System.Exception)
{
return Content("<script>alert('查無此檔案');window.close()</script>");
}
}
另外補充 在Chorme 裡面有些點下後會直接下載
有些點下後 會跳出要你選擇儲存位置
那並不是程式可以控制的,那是瀏覽器本身(可能Chorme帳號設定)設定