最近给一个小功能的时候用到了文件上传,以前都是在用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;
}
}