基于Spring CommonsMultipartResolver批量上传文件
来源:互联网 发布:oracle有mac版吗 编辑:程序博客网 时间:2024/06/05 04:32
实现上传文件的方法有很多,以下介绍基于Spring CommonsMultipartResolver的方式实现批量上传文件。
HTML页面中的表单最初所采用application/x-www-form-urlencode编码方式,并不满足文件上传的需要。所以RFC 1867在此基础之上增加了新的multipart/form-data编码方式以支持基于表单的文件上传。通常情况下,按照如下格式声明表单以及表单中的元素:
<form id="upload" name="upload" action="/Demo/upload/multiUploadFile.do" enctype="multipart/form-data" method="post"> <input type="file" name="file"> <input type="submit" value="上传文件 " class="button"></form>
表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据。
客户端浏览器将按照RFC 1867所规定的格式对提交表单内容进行编码,服务器端只需要根据RFC 1867规定的格式对请求中的信息进行解码,就可以获得客户端表单提交的数据,包括上传的文件。但既然RFC 1867所规定的规则是固定的,我们就没有必要每次都根据这一规则分析每一次请求中的信息。既然是通用的规则,当然也会有通用的类库,比如早期的jsp smart upload和Oreilly和COS类库,以及现在使用最多的commons fileupload类库。在实际开发中,我们只需要使用这些专门针对表单的文件上传处理类库即可。
jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><script type="text/javascript" src="../common/js/jquery-1.7.2.js"></script><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Multi File Upload</title></head><body><form id="multiUploadForm" name="multiUploadForm" action="/Demo/upload/multiUploadFile.do" enctype="multipart/form-data" method="post"> <div align="center"><br> <fieldset style="width:90%"> <legend>上传文件</legend><br> <div class="line"> <div align="left" class="leftDiv">文件1</div> <div align='left' class="rightDiv"> <input type="file" name="file1" class="text"> </div> </div> <div class='line'> <div align='left' class="leftDiv">说明1</div> <div align='left' class="rightDiv"><input type="text" name="description1" class="text"></div> </div> <div class='line'> <div align='left' class="leftDiv">文件2</div> <div align='left' class="rightDiv"> <input type="file" name="file2" class="text"> </div> </div> <div class='line'> <div align='left' class="leftDiv">说明2</div> <div align='left' class="rightDiv"><input type="text" name="description2" class="text"></div> </div> <div class='line'> <div align='left' class="leftDiv"></div> <div align='left' class="rightDiv"><br/> <input type="submit" value="上传文件 " class="button"> </div> </div> </fieldset> </div></form></body></html>
处理上传的Servlet:
@Controller@RequestMapping("/upload")public class UploadController extends HttpServlet { @RequestMapping("/multiUploadFile.do") public void multiUploadFile(HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException{ try{ //创建一个通用的解析器 CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); //判断是否有文件上传 if(commonsMultipartResolver.isMultipart(request)){ //转换成多部分request MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext()); MultipartHttpServletRequest multiRequest = resolver.resolveMultipart(request); Iterator<String> iter = multiRequest.getFileNames(); while(iter.hasNext()){ //记录上传过程起始时的时间,用来计算上传时间 int beginTime = (int) System.currentTimeMillis(); //取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); if(file != null){ //取得当前上传文件的文件名称 String myFileName = file.getOriginalFilename(); //如果名称不为“”,说明该文件存在,否则说明该文件不存在 if(myFileName.trim() !=""){ System.out.println(myFileName); //重命名上传后的文件名 String fileName = "uploadNewFile" + file.getOriginalFilename(); //定义上传路径 String path = "D:/" + fileName; File localFile = new File(path); file.transferTo(localFile); } } //记录上传该文件后的时间 int finaltime = (int) System.currentTimeMillis(); System.out.println(finaltime - beginTime); } } request.getRequestDispatcher("/success.jsp").forward(request, response); }catch(Exception e){ e.printStackTrace(); } }}
1 0
- 基于Spring CommonsMultipartResolver批量上传文件
- Spring CommonsMultipartResolver 上传文件
- Spring CommonsMultipartResolver 上传文件
- Spring CommonsMultipartResolver 上传文件
- 基于Spring的CommonsMultipartResolver类进行文件上传
- 使用Spring CommonsMultipartResolver 上传文件
- 使用Spring CommonsMultipartResolver 上传文件
- 使用Spring CommonsMultipartResolver 上传文件
- 使用Spring CommonsMultipartResolver 上传文件
- 使用Spring CommonsMultipartResolver 上传文件
- 使用Spring CommonsMultipartResolver 上传文件
- 使用Spring CommonsMultipartResolver 上传文件
- Spring CommonsMultipartResolver文件上传的使用
- Spring 下CommonsMultipartResolver文件上传功能用法
- CommonsMultipartResolver进行文件上传
- spring ApplicationContext-mvc之CommonsMultipartResolver对文件上传的支持
- spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小
- spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小
- Redis安装
- OkHttp3网络协议的使用
- Linux回射服务器(一):多进程实现并发
- php 百度地图api接入
- ODBC API开发——初学
- 基于Spring CommonsMultipartResolver批量上传文件
- 关于 Apache Maven 您不知道的 5 件事
- 我是怎么招聘程序员的
- Android 异步加载解决方案
- Navicat常用快捷键
- Java设计模式
- js实现上传图片立即回显
- SpringMVC执行流程
- L2-005. 集合相似度