2010-08-18 71 views
5

我需要設置一個文件處理程序路由與多個子目錄像tihs;ASP.NET MVC路由文件與多個子目錄

http://localhost/images/7/99/786936215595.jpg 

我試着把這個放在global.asax文件中;

routes.Add(
    "ImageRoute", 
    new Route("covers/{filepath}/{filename}", 
    new ImageRouteHandler())); 

我正在使用本Question發現ImageHandler,如果你有一個子目錄(即「/images/15/786936215595.jpg」),它的偉大工程,但是當你有多個目錄失敗。

我試圖建立一個通配符並沒有工作(即「新幹線(‘蓋/ {文件路徑}/*/{文件名}’」)

這是從大的NAS提供圖片(覺得有什麼樣3萬張圖片),所以它不喜歡我可以移動文件

感謝

回答

3

好了之後,玩了很多和谷歌福,我發現如何使它的工作。

像這樣改變路線定義;

routes.Add(
    "ImageRoute", 
    new Route("images/{*filepath}", 
    new ImageRouteHandler())); 

然後把這個默認的MapRoute之後。重要的部分是文件路徑之前的「*」,它告訴MVC在此之後發送任何東西作爲文件路徑RouteData的一部分。所以在GetHttpHandler()方法中,我可以通過使用這個獲得完整的路徑;

string fp = requestContext.RouteData.Values["filepath"] as string; 

Woot!

+0

謝謝,這使我在正義的道路上。 – 2014-04-20 05:35:23

0

你能不能當作一個路由參數整個路徑,如下所示:!?

routes.Add(
    "ImageRoute", 
    "/images/{path}", 
    new { controller = "Image", action = "Image" } 
); 

然後訪問ActionResult Image(string path) { }操作方法中的整個路徑?