我已将媒体(图片和电影)存储在文件夹中(例如 C:\test\tes.png),并且我尝试使用以下网址访问图片:http://localhost:8080/app/picture/test.png。
为此,我使用了资源标签(spring 3),如下所示:
<mvc:resources mapping="/picture/**" location="file:/test" />
当我尝试访问时,出现错误,但没有更多详细信息。
未找到请求的资源
我在日志中有:
2011-11-07 20:48:55,241 [http-8080-2] 调试 org.springframework.web.servlet.DispatcherServlet - 名为“Family”的 DispatcherServlet 处理 [/Family/photos/testImage2.png] 的 GET 请求
2011-11-07 20:48:55,241 [http-8080-2] 调试 org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 请求的匹配模式 [/photos/testImage2.png] 是 [/**]
2011-11-07 20:48:55,241 [http-8080-2] 调试 org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 请求 [/photos/testImage2.png] 的 URI 模板变量为 {}
2011-11-07 20:48:55,242 [http-8080-2] 调试 org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - 使用处理程序 [org.springframework.web.SimpleUrlHandlerMapping] 将 [/photos/testImage2.png] 映射到 HandlerExecutionChain。 servlet.resource.DefaultServletHttpRequestHandler@3a779f5e] 和 4 个拦截器
2011-11-07 20:48:55,242 [http-8080-2] 调试 org.springframework.web.servlet.DispatcherServlet - [/Family/photos/testImage2.png] 的上次修改值为:-1
2011-11-07 20:48:55,242 [http-8080-2] 调试 org.springframework.web.servlet.DispatcherServlet - Null ModelAndView 返回到名称为“Family”的 DispatcherServlet:假设 HandlerAdapter 已完成请求处理
2011-11-07 20:48:55,242 [http-8080-2] 调试 org.springframework.web.servlet.DispatcherServlet - 成功完成请求
我当然没有全部理解...
另一个问题:我不确定这是个好方法。访问外部文件夹上的媒体还有哪些其他解决方案?
提前致谢 !
第一个问题:“映射”
我不是100%确定,但我猜,有一个最终的/
缺少该位置。
将其更改为:
<mvc:resources mapping="/picture/**" location="file:/test/" />
另一个问题:我不确定这是个好方法。访问外部文件夹上的媒体还有哪些其他解决方案?
以我的拙见,向网站用户授予对文件夹的完全读取权限是非常糟糕的做法。注意,访问不仅限于文件夹,用户还可以访问所有子文件夹。
*即使您决定忽略此警告,那么您也必须测试如果某些使用调用会发生什么http://localhost:8080/app/picture/../someFile
.** 我不知道会发生什么,但是 ** 120% 确保没有人可以访问外部的任何文件picture
文件夹! -- 我查看了 spring 的实现,发现 spring 已经处理了这个问题。*从 Spring 3.2.12、4.0.8、4.1.2 开始,资源处理程序确保您不会访问指定资源文件夹之外的文件夹。 (SPR-12354:使用静态资源处理进行目录遍历 (CVE-2014-3625))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)