Spring MVC文件上传和公共目录

时间:2014-09-09 17:13:15

标签: spring-mvc tomcat

我有一个类似" downloads"的文件夹。 (完整路径:"C:\tomcat\downloads")。

这是我扔掉所有上传文件的文件夹。现在我想像这样访问它们:

<a href ="localhost:8080/exampleproject/downloads/image.jpg"> Clickme </a>

在此文件夹&#34; downloads&#34;中可以是任何内容。

唯一的问题是如何制作公用文件夹。目前我可以将发送的文件保存到磁盘并删除它们。但是,我想像上面那样访问它们。

这取决于spring或tomcat服务器的配置?一些例子......

2 个答案:

答案 0 :(得分:2)

阅读时

<a href ="examplelink"> Clickme </a>

浏览器将发送Http Request,方法GET链接&#34; examplelink&#34;。因此,在服务器中我们需要创建控制器捕获此GET请求。例如:

<img src="image/getimage.html?fileName=${product.imageName }" alt="" title="" width="100" height="100" class="thumb" border="0" />

我们将收到请求

http://localhost:8080/somwthing/image/getimage.html?fileName=1409028722025-7d932ec9-18c4-4d17-a61d-557aa8de7970.jpg

在服务器中,我们创建控制器捕获此请求,例如。

@Controller
@RequestMapping(value = "/image")
public class ImageController {

/**
 * Download single file using
 * @throws IOException 
 */
@RequestMapping(value = "/getimage", method = RequestMethod.GET)
public void getImage(@RequestParam(value="fileName", required=true) String  fileName,HttpServletResponse response,HttpServletRequest request) throws IOException {
    File f = new File("C:\\tomcat\\downloads\\"+ fileName);
    BufferedImage bi = ImageIO.read(f);
    OutputStream out = response.getOutputStream();
    ImageIO.write(bi, "jpg", out);
    out.close();
}

}

请注意,从系统中其他位置读取文件会对安全性造成很大风险。示例将应用程序部署到云时,无法创建类似C:\ tomcat \ downloads

的文件夹

答案 1 :(得分:2)

或者您可以使用<mvc:resources>

<mvc:resources mapping="/images/**" location="file:/absolute/path/to/image/dir"/> 

这可以更容易,更快捷。 有关详细信息,请点击此处 http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/resources.html