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撰寫相關的管控程式就可以了.

arrow
arrow
    創作者介紹
    創作者 baechang 的頭像
    baechang

    翁百璋與大泡泡的奇幻旅程

    baechang 發表在 痞客邦 留言(0) 人氣()