最近给一个小功能的时候用到了文件上传,以前都是在用Servlet实现,这次想着用SpringMVC实现,写完后发现SpringMVC实现文件上传实在是太方便了。接下来就把代码和大家分享一下
package com.feicuiedu.util; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.web.multipart.commons.CommonsMultipartFile; /** * 文件处理工具类 * @author Wangbt * */ public class FileUtil { // 文件保存本地磁盘路径 private static final String UPLOAD_URL = "E:/OA"; /** * 文件上传<br> * 支持多文件上传 * @param files * @return */ public static List<Map<String, String>> fileUpload(CommonsMultipartFile[] files, String url) { if (files == null || files.length == 0) return null; List<Map<String, String>> fileInfo = new ArrayList<>(); try { for (int i = 0; i < files.length; i++) { if (!files[i].isEmpty()) {// 判断文件是否为空 Map<String, String> map = new HashMap<>(); String pashParent = UPLOAD_URL + url; File file = new File(pashParent); if (!file.exists())// 如果保存的文件路径不存在,就创建响应目录 file.mkdirs(); String fileName = new Date().getTime() + "." + files[i].getOriginalFilename().split("\\.")[1]; String pash = pashParent + fileName; // 保存文件路径和原文件名 map.put("url", url + fileName); map.put("formerly", files[i].getOriginalFilename()); fileInfo.add(map); // 获取输出流 FileOutputStream fos = new FileOutputStream(pash); // 获取输入流 InputStream is = files[i].getInputStream(); // 以字节方式写入文件 int a = 0; while (((a = is.read())) != -1) { fos.write(a); } fos.flush(); fos.close(); is.close(); } } } catch (Exception e) { e.printStackTrace(); return null; } return fileInfo; } }