springMVC实现多文件上传
2016-06-07 18:53
281 查看
<h2>上传多个文件 实例</h2> <form action="/workreport/uploadMultiFile.html" method="post" enctype="multipart/form-data"> <p> 选择文件:<input type="file" name="files"> <p> 选择文件:<input type="file" name="files"> <p> 选择文件:<input type="file" name="files"> <p> <input type="submit" value="提交"> </form>
// 多文件上传 @RequestMapping(value = "/uploadMultiFile") public String uploadMultiFile(HttpServletRequest request) { try { // 创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); // 判断 request 是否有文件上传,即多部分请求 if (multipartResolver.isMultipart(request)) { // 转换成多部分request MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; // get the parameter names of the multipart files contained in this request Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { // 取得上传文件 List<MultipartFile> multipartFiles = multiRequest.getFiles(iter.next()); String basePath = "F:/testDir/"; for (MultipartFile multipartFile : multipartFiles) { String fileName = multipartFile.getOriginalFilename(); if (StringUtils.isNotEmpty(fileName)) { multipartFile.transferTo(new File(basePath + fileName)); } } } } } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "test/success"; }
以下是以文件流的形式保存上传的文件:
// 文件上传 @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public String uploadFile(HttpServletRequest request) throws IOException { MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request; MultipartFile file = multipartHttpServletRequest.getFile("file"); String fileName = file.getOriginalFilename(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String path = "F:/" + simpleDateFormat.format(new Date()) + fileName.substring(fileName.lastIndexOf(".")); OutputStream fileOutputStream = new FileOutputStream(path); InputStream inputStream = file.getInputStream(); byte[] buffer = new byte[2048]; while (inputStream.read(buffer) != -1) { fileOutputStream.write(buffer); } log.info(path); fileOutputStream.flush(); fileOutputStream.close(); inputStream.close(); return "test/success"; }
注:使用springMVC进行多文件的效率显然要比字符流写入方式效率上要高
相关文章推荐
- Servlet API
- resource获取方法之一,java.lang.Class的getResource
- Java8:函数接口(Functional interfaces)
- 三角函数关系的方法
- java重载和重写的区别
- JVM学习笔记(二)------Java代码编译和执行的整个过程
- Java中的五种单例模式实现方法
- Java WebService 简单实例
- javaweb_js的dom节点操作应用
- mac下查找已经安装的java home路径
- java compareTo 和 binarySearch
- Java防止非法和重复表单提交的分析
- Java中过滤出字母、数字和中文的正则表达式
- Java中的位运算
- SpringMVC是如何过滤json数据的
- 《HEAD FIRST JAVA》第一次回顾和整理
- JAVA 继承与代理
- 抽象类与接口
- javaWeb学习servlet过程遇到405问题
- java swing-基本的框架结构