2011-11-02 56 views
1

我有一个运行在Tomcat上的Java webapp。 在运行时,我创建了想要在tomcat服务器上公开发布的图像文件。如何发布运行时在Tomcat服务器上生成的非Java资源?

1 /如何获取我想要复制图像文件的本地URL? (即/ mylocalpath/to/where/i/should/store/the/file /)

2 /如何知道其他机器可以访问此公共文件的URL? (即http://mydomainname/myapp/myresource.png

+0

可能重复的[访问Tomcat目录路径](http://stackoverflow.com/questions/4546901/accessing-tomcat-directory-path),[可靠的数据服务](http://stackoverflow.com/questions/) 1502841 /可靠的数据服务),[加载图像外webcontext](http://stackoverflow.com/questions/4543936/load-the-image-from-outside-of-webcontext-in-jsf)和可能更多。 – BalusC

回答

0

我已经想出了一个更简单的方法来做到这一点(这可能听起来对于Tomcat专家来说很明显,但对其他人有用)。

在Tomcat中6“的server.xml”文件,我已经在<主机>元素加入这一行:

<Context docBase="/mylocalpath/to/where/i/should/store/the/file" path="/uploads" /> 

然后,当我创建我的资源我把它复制此本地目录和身影很容易就可以看出公众网址:http://myserver/uploads/myfilename

希望它能帮助别人。我甚至认为上下文可以在WAR中包含的context.xml中定义,而不是在Tomcat的全局配置中,但全局定义足以满足我的需求)。

1

将路径保留在servlet init-param,JNDI字符串或属性文件中。 (或者你的框架提供的任何东西都允许简单的配置)。

创建一个servlet/action/controller/etc。它映射到一个已知的URL。要么传入一个参数与文件名或使文件名的一部分的URL。将文件的内容流式传输回用户。 (例如,搜索“图像servlet”。)

请记住文件的mime类型并设置适当的标题。如有必要,请检查请求的用户是否有权访问相关文件。 (有几种方法可以实现这一点。)

+0

谢谢。我更了解一个更好的解决方案。但事情是我不想直接将文件流式传输回用户。我只想给网址。然后,另一方可以随时请求这个URL。我想一个解决方案可能是专用的servlet保存所有生成项目的Map,由任意键标识,并与文件的本地路径关联。因此,我可以发送一个像http://toto.com/myapp/image?id=xxx这样的URL并完成这个技巧。你怎么看? –

+1

*是一个URL,即流式servlet。您无法提供不在应用上下文中的网址。 –

相关问题