从java中的物理路径下载文件

时间:2012-09-02 06:09:12

标签: java spring-mvc download

我使用spring MVC文件上传功能上传文件,文件上传到/ home / myfolder / images /文件夹。现在我想从这个物理路径下载这些文件。为了在我的jsp中测试,我写了以下一行

   <a href="<%=request.getSession().getServletContext().getRealPath("/home/images/image.jpg")%>" >download </a>

但是当我点击此链接时,它会将我重定向到网址

    http://localhost:8080/home/myfolder/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myproject/home/images/image.jpg.

如何下​​载保存的图像。如果您还需要我解决此问题,请告诉我。

2 个答案:

答案 0 :(得分:4)

尝试使用:

<!-- Handles HTTP GET requests for /resources/ ** by efficiently serving up static resources -->
<mvc:resources mapping="/images/**" location="file:/home/images"/>
<!-- Allows for mapping the DispatcherServlet to "/" by forwarding static resource requests to the container's default Servlet -->
<mvc:default-servlet-handler/>

在jsp中:

<img src="/images/image.jpg" />

以下是主题:Spring : serving static resources outside context root

答案 1 :(得分:2)

应用程序容器无法提供Webapps文件夹外的文件。

一些可能性:

1)上传到应用程序容器中Webapps文件夹下面的文件夹。 E. g。

鉴于您的Webapps文件夹是/ home / myfolder / Tomcat / webapps / myApp / 您可以上传到/ home / myfolder / Tomcate / webapps / myApp / upload /

这样,上传的文件可以由应用程序容器提供。

2)通过符号链接使应用程序容器可以访问上载文件夹。您可能需要更改容器的配置才能使其正常工作。

3)如果您在应用程序容器(如httpd)前使用Web服务器,请让Web服务器提供静态文件。

4)编写自己的servlet,从任意文件中读取并将内容提供给客户端。