SpringMVC实现文件上传

1.SpringMVC传统方式文件上传

  1. SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的name属性名称相同。

  2. 代码如下

    /**
    * SpringMVC方式的文件上传
    *
    * @param request
    * @return
    * @throws Exception
    */
    @RequestMapping(value="/fileupload2")
    public String fileupload2(HttpServletRequest request,MultipartFile upload) throws Exception {
    	System.out.println("SpringMVC方式的文件上传...");
    	// 先获取到要上传的文件目录
    	String path = request.getSession().getServletContext().getRealPath("/uploads");
    	// 创建File对象,一会向该路径下上传文件
    	File file = new File(path);
    	// 判断路径是否存在,如果不存在,创建该路径
    	if(!file.exists()) {
    	file.mkdirs();
    	}
    	// 获取到上传文件的名称
    	String filename = upload.getOriginalFilename();
    	String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
    	// 把文件的名称唯一化
    	filename = uuid+"_"+filename;
    	// 上传文件
    	upload.transferTo(new File(file,filename));
    	return "success";
    }
    
  3. 配置文件解析器对象

    
    <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    	<property name="maxUploadSize" value="10485760"/>
    bean>
    

2. SpringMVC跨服务器方式文件上传

  1. 搭建图片服务器
    1. 根据文档配置tomcat9的服务器,现在是2个服务器
    2. 导入资料中day02_springmvc5_02image项目,作为图片服务器使用
  2. 实现SpringMVC跨服务器方式文件上传
    1. 导入开发需要的jar包
      <dependency>
      	<groupId>com.sun.jerseygroupId>
      	<artifactId>jersey-coreartifactId>
      	<version>1.18.1version>
      dependency>
      <dependency>
      	<groupId>com.sun.jerseygroupId>
      	<artifactId>jersey-clientartifactId>
      	<version>1.18.1version>
      dependency>
      
    2. 编写文件上传的JSP页面
      	<h3>跨服务器的文件上传h3>
      	<form action="user/fileupload3" method="post" enctype="multipart/form-data">
      		选择文件:<input type="file" name="upload"/><br/>
      		<input type="submit" value="上传文件"/>
      	form>
      	```
      
    3. 编写控制器
      @RequestMapping(value="/fileupload3")
      public String fileupload3(MultipartFile upload) throws Exception {
      	System.out.println("SpringMVC跨服务器方式的文件上传...");
      	// 定义图片服务器的请求路径
      	String path = "http://localhost:9090/day02_springmvc5_02image/uploads/";
      	// 获取到上传文件的名称
      	String filename = upload.getOriginalFilename();
      	String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
      	// 把文件的名称唯一化
      	filename = uuid+"_"+filename;
      	// 向图片服务器上传文件
      	// 创建客户端对象
      	Client client = Client.create();
      	// 连接图片服务器
      	WebResource webResource = client.resource(path+filename);
      	// 上传文件
      	webResource.put(upload.getBytes());
      	return "success";
      }
      

你可能感兴趣的:(专题)