2011-11-07 129 views
4

我已經存儲在一個文件夾(例如C:\ test \ tes.png)中的媒體(圖片和電影),我試圖訪問與像這樣的網址的圖片:http://localhost:8080/app/picture/test.png 。 要做到這一點,我已經使用的資源標籤(彈簧3)如下:春天mvc:資源訪問外部文件夾

<mvc:resources mapping="/picture/**" location="file:/test" /> 

當我嘗試訪問,我有沒有更多的細節錯誤。

請求資源未找到

我在日誌:

2011-11-07 20:48:55241 [HTTP-8080-2] DEBUG org.springframework.web .servlet.DispatcherServlet - 名爲'Family'的DispatcherServlet處理[/Family/photos/testImage2.png]的GET請求 2011-11-07 20:48:55,241 [http-8080-2] DEBUG org.springframework.web。 servlet.handler.SimpleUrlHandlerMapping - 請求[/photos/testImage2.png]的匹配模式是[/ **] 2011-11-07 20:48:55,241 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 請求的URI模板變量[/photos/testImage2.png]爲{} 2011- 11-07 20:48:55,242 [http-8080-2] DEBUG org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 使用handler [org.springframework.web.servlet。將映射[/photos/testImage2.png]映射到HandlerExecutionChain。 [email protected]]和4個攔截器 2011-11-07 20:48:55,242 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - [/ Family/photos/testImage2的Last-Modified值.png]:-1 2011-11-07 20:48:55,242 [http-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - Null ModelAndView返回名爲'Family'的DispatcherServlet:假設HandlerAdapter已完成請求處理 2011-11-07 20:48:55 ,242 [HTTP-8080-2] DEBUG org.springframework.web.servlet.DispatcherServlet - 成功完成請求

我肯定不是全部明白...

另一個問題是:我不知道這是一個好方法。訪問外部文件夾上媒體的其他解決方案是什麼?

在此先感謝!

+0

你可以在你的webapp中擁有一個媒體文件夾的快捷方式嗎? –

+0

查看Spring Resources servlet。它可以提供你想要的功能。 – DwB

回答

3

第一個問題:「映射」

我不是100%肯定,但我猜想,有一個最終的/缺失的位置。 將其更改爲:

<mvc:resources mapping="/picture/**" location="file:/test/" /> 

另一個問題是:我不知道這是好辦法。訪問外部文件夾上媒體的其他解決方案是什麼?

在我的拙見認爲,讓網站用戶完全讀取文件夾的權限是非常糟糕的做法。注意訪問不僅限於該文件夾,而且用戶還可以訪問所有子文件夾。

*即使您決定忽略此警告,那麼您必須測試會發生什麼,如果一些使用調用 http://localhost:8080/app/picture/../someFile。**我不知道會發生什麼,但**使120%確保沒有人可以訪問 picture文件夾之外的任何文件! - 我已經看了一下Spring的實現,並且它已經處理了這個問題。* 自從Spring 3.2.12,4.0.8,4.1.2 Resource Handler確保你不訪問一個文件夾在指定的資源文件夾之外。 (SPR-12354: Directory traversal with static resource handling (CVE-2014-3625)

+1

感謝ralph提供的建議!您對此練習無疑是正確的,因此我使用了MediaServlet來檢索它們。有關圖像示例,請參見[link](http://balusc.blogspot.com/2007/04/imageservlet.html)。偉大的工作! – user1034407

+0

感謝您的鏈接!保存了我的夜晚! hauhaahua –