close
一個後台管理系統通常都會有檔案上傳的功能,通常的用意在於前台在某些頁面需要下載相關的檔案,
像是word. excel, pdf 等等,做法其實大家都很熟,反正就是丟到一個資料夾,然後資料庫寫好這檔案路徑,
連結指到,完畢.
問題來了,這個檔案需要被權限管控,簡單來說好了,登入才可以讀取,
一定有人會說,那把這個資料夾設定成不能直連,通通用串流的方式讀取在回拋不就好了,
不過這個資料夾裡面有包含不用登入也可以讀取的,像是圖檔,當然也可以剛剛的方法判斷然後再串流,
可是依照案例考量,圖檔太多,需要被規範的只有特定文件,全部都用串流,那肯定會讓Server的負擔加重,
試想,如果一篇文章有十張圖,那不就做十次檔案IO跟串流
所以先將這個資料夾通稱為UploadFiles在IIS裡面變成一個應用程式,
然後寫一個MVC專案,利用MVC路由,達到我們的需求,
很簡單的在RouteConfig.cs裡面新增幾個需要被規範的附加檔名
1: routes.RouteExistingFiles = true; // 路由檔案
2:
3: routes.MapRoute(
4: "UploadFiles", "{*RestOfPath}",
5: new { controller = "Home", action = "UploadFiles" },
6: new { RestOfPath = @".*\.pdf" }
7: , new string[] { "UploadFiles.Controllers" }
8: );
9: routes.MapRoute(
10: "UploadFiles2", "{*RestOfPath}",
11: new { controller = "Home", action = "UploadFiles" },
12: new { RestOfPath = @".*\.xlsx" }
13: , new string[] { "UploadFiles.Controllers" }
14: );
以上代表 pdf 檔案 跟 xlsx 檔案需要被控管,
只要是這樣的副檔名就會被路由到HomeCpontroller的UploadFiles這個Action,
然後再到這個Action撰寫相關的管控程式就可以了.
文章標籤
全站熱搜
留言列表