Spring MVC 上传图片保存到本地并立即显示

1.加入jar包

上边的解析内部使用下边的jar进行图片上传。


所需jar已传入我的资源页 名字为springmc文件上传


2. SpringMVC 添加对多部件解析的Bean

在 页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。所以在servlet.xml中添加解析器(如果表单的类型是multipart,

一定要配置这个解析器,否则参数绑定失败,传参失败)。如下:


		
		
			104857600
		
		
			4096
		
	

3. 配置本地虚拟服务存储和读取保存的本地图片

由于我们有时候保存的图片数量很多或者图片很大,不可能把图片放到数据库中进行存储,所以最好的办法就是放到服务器单独的文件夹中,但是

jsp读取不到tomcat工程以外的文件,所以就需要配置虚拟目录可以使jsp读取到本地的文件,具体配置如下:

假如你想把文件的路径设置为F:\java_code\picture

 第一种方法就是双击tomcat server进行配置如图:

Spring MVC 上传图片保存到本地并立即显示_第1张图片

 第二种方法:也可以在tomcat的server.xml中进行配置


4.编写上传图片的前台页面

我使用的是jquery,这样可以直接显示出上传的图片

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page isELIgnored="false" %>



<%@include file="/jsp/include.jsp"%>




	
选择文件:

4.编写controller层,用于图片保存到本地

返回到前台一个本地的路径,注意因为我们已经配置好了虚拟路径只需要把图片的名字返回到前台即可

 @RequestMapping("uploadPhoto")
    @ResponseBody
    public String uploadImage(HttpServletRequest request,
            HttpServletResponse response, HttpSession session,
            @RequestParam(value = "file", required = true) MultipartFile file)
            throws IllegalStateException, IOException {
        //String path = session.getServletContext().getRealPath("/upload");
        String pic_path = "F:\\java_code\\picture\\";
        System.out.println("real path: " + pic_path);
        String fileName = file.getOriginalFilename();
        System.out.println("file name: " + fileName);
        File targetFile = new File(pic_path, fileName);
        if (!targetFile.exists()) {
            targetFile.mkdirs();
        }
        file.transferTo(targetFile);
        String fileUrl = fileName;
        return fileUrl;
    }

至此图片上传到本地就已经完成了


你可能感兴趣的:(Spring MVC 上传图片保存到本地并立即显示)