2012-12-14 83 views
0

我试图在我的webapp外部显示存储在本地文件系统中的图像。 以下问题:Simplest way to serve static data from outside the application server in a Java web application在JSP中显示文件系统存储的图像

编辑:我想文件被外面的web应用导致这些图片是由网友上传,如果我把它们里面的webapp,当我重新部署Web应用程序

我可能会失去他们

但该文件未显示在网页上。当我尝试打开文件:localhost:8080/images/imageName.jpg它给我一个资源不可用的错误。

我在server.xml中添加上下文(运行通过量服务器 - > Config-> server.xml中):

........ 
<Context docBase="DMSystemV1.0" path="/DMSystemV1.0" reloadable="true" source="org.eclipse.jst.jee.server:DMSystemV1.0"/> 
     <Context docBase="/Projects/SpringExample/Images" path="/images"/> 
     </Host> 

也是我的web.xml看起来是这样的:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/static/*</url-pattern> 
    </servlet-mapping> 
    <servlet> 
    <servlet-name>DMSystem</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>DMSystem</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 

,我想让它变得显示的地方:<img src="/images/${imagePath}" alt="Item's image">

Mytomcat是:F:\ SOFTWARE \服务器\ tomcat7 \ tomcat7 虽然图像文件夹为:F:\项目\ SpringExample \ Images

图像路径是相对于tomcat文件夹?

此外,现在写我对上传路径(在我的上传servlet中)和server.xml中的下载路径进行硬编码,有没有办法将它们提供为配置或设置信息?

+0

*“我试图显示存储在本地文件系统之外的图像在我的web应用程序之外。”*为什么不将图像包含在Web应用程序中? –

+0

虽然有解决方法,但Web应用程序通常不应/通常不应访问本地文件系统。您必须编写拦截请求的内容,从文件系统加载映像并将其返回。 – GreyBeardedGeek

+0

@AndrewThompson:因为这些图片是由用户上传的,如果我重新部署web应用,它们可能会被删除 – Sudh

回答

2

最简单的解决方案是复制图像并将其提供给您的web-app根目录。但是,如果这个解决方案并不适合你无论出于何种原因,你总是可以创建一个servlet来“代理”你的形象:

创建一个servlet,它映射到一个路径,例如:

<servlet-mapping> 
    <servlet-name>imageProxyServlet</servlet-name> 
    <url-pattern>/imagesproxy/*</url-pattern> 
</servlet-mapping> 

然后在您的servlet类上,执行文件IO来读取您的图片,然后将其写入响应。不要忘记设置适当的内容类型,并使用缓冲读/写,以避免在图像很大时丢失内存。

然后,您可以将您的图像作为http://mydomain.com/myapp/imagesproxy/something.jpg。对该URL的请求将被发送到图像代理服务器小程序

+0

谢谢你看起来像一个可能的解决方案...将尝试... – Sudh

+0

提示:1)对于没有标记XML的问题中的XML更漂亮的格式化,使用'<! - language:lang-xml - >'片段。 2)你确定*该代码片段结构合理吗?似乎需要关闭''。 –

+0

谢谢它的作品:) – Sudh

相关问题