springMVC实现上传文件

 HTTP上载是基于 RFC 1867 标准,Spring MVC 利用Apache commons fileupload 组件支持了这个标准,
 这样利用Spring MVC提供的API可以轻松的获得上载文件:
 
 实现步骤:
 1.配置jar包依赖(会和原先的jar包有隐式的依赖冲突,删掉原先不必要的jar包就可以了)
  
 <dependency>
   <groupId>commons-fileupload</groupId>
   <artifactId>commons-fileupload</artifactId>
   <version>1.3.3</version>
  </dependency>
 2.配置spring上载解析器
 
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
  <property name="maxUploadSize" value="5000000"/>
  <property name="defaultEncoding" value="utf-8"></property>
 </bean>
 3.在前端的form表单中提交文件,要设置form表单的参数  enctype="multipart/form-data"
  input框中的type属性设置为file,必须配置name属性,服务器在接收的时候要匹配名字;
  
<form enctype="multipart/form-data" 
   action="upload.do" method="post">
   姓名:<input type="text" name="username"><br> 
   照片:<input name="userfile1" type="file"><br>
     <input type="submit" value="上传">
  </form>
 4.控制器中处理上载请求:
 
 /**
   * 处理上载请求
   */
  @RequestMapping(value="upload.do", method=RequestMethod.POST)
  @ResponseBody
  public ResponseResult<Void> upload(
   @RequestParam("userfile1") MultipartFile image,
   @RequestParam("username") String username,
   HttpServletRequest request) 
   throws IOException {
   //打桩
   System.out.println(username);
   System.out.println(image);
   //获取上载文件信息
   System.out.println(image.getContentType());
   System.out.println(image.getName());
   System.out.println(image.getOriginalFilename());
   System.out.println(image.getSize());
   //保存到文件系统
   String path="/images/upload";//WEB路径
   path = request.getServletContext().getRealPath(path);//实际路径
   System.out.println(path); 
   //创建upload文件夹
   File dir = new File(path);
   dir.mkdir();
   File file=new File(dir,image.getOriginalFilename());
   //将上载文件保存到文件中
   image.transferTo(file);
   //返回响应结果(ResponseResult<Void>这个类中封装了返回给页面的状态信息,响应消息和响应数据)
   ResponseResult<Void> rr=new ResponseResult<Void>();
   rr.setState(ResponseResult.STATE_OK);
   rr.setMessage("上载成功");
   return rr;
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值