我希望透過網頁直接讀取我資料夾的pdf開新視窗呈現
<a href="file://///D:/kill/test.pdf" target="_blank">點擊這裡打開 PDF</a>
在Chrome 會出現 Not allowed to load local resource: 錯誤訊息
應該是安全政策的關係
目前想法是把 資料夾上到IIS變成虛擬資料夾再連線
想請問還有更好的方法嗎?
程式設好路徑是
path: \192.168.0.1\kill\test.pdf
這種嗎?
<a href="~/kill/test.pdf" target="_blank">點擊這裡打開 PDF</a>
2.放其他硬碟其他位置下,但要在程式設置好路徑
一般來說,我們會提供使用者上傳檔案,上傳檔案通常會另外放,不會放在應用程式路徑底下,這時就會設置別的路徑
可能設在D:\WebData\PDF
那我們通常會使用appsetting.json去設定這個路徑,因為可以依照你的版本(開發階段、master)去設置
例如
//appsetting.json
"FilePath": {
"PhysicalPath": "D:\\WebData\\PDF"
}
然後你是mvc
可以新增一個action去執行你要的讀取動作
例如
後端
//我假設這是killController
public IActionResult GetPDF()
{
//這個就是讀取上方appsetting的設置,你想寫死也可以直接寫死你要的路徑
var filePath = Path.Combine(_configuration["FilePath:PhysicalPath"], "kill", "test.pdf");
//路徑串起來為D:\\WebData\\PDF\\kill\\test.pdf
var contentType = "application/pdf";
byte[] b = System.IO.File.ReadAllBytes(filePath);
return File(b, contentType);
}
前端則可以
<a href="/kill/GetPDF" target="_blank">點擊這裡打開 PDF</a>
不需要虛擬資料夾,兩個方式提供你做選擇
file://///D:/kill/test.pdf
是 C# 自動抓資料夾產生的嗎?
這是不是代表有 server 的環境?
如果是如此,可以寫一套 API 讓網頁跟這組 API 溝通
PS. 可以的話,請把背景寫清楚一些,其他人才不用猜測你想做什麼。例如有沒有伺服器的環境,PDF 是長時間固定不變的還是會頻繁變動。更新 pdf 之後,後台是否要做什麼樣的操作,瀏覽器才會收到更新後檔案的列表。