@Override
public void uploadFile(MultipartFile file) {
// 构建上传文件路径和名字
String oriName = file.getOriginalFilename();
// ie低版本浏览器会获取到盘符路径,谷歌不会,故再转一次获取
String fileName =new File(oriName).getName();
String targetPath = ymlConfig.getApplyTablePath() + DateUtil.DateToString(new Date(), DateStyle.YYYYMMDD)+ "/" + fileName;
File targetFile = new File(targetPath);
// 判断文件夹是否未空,空则创建
if (!targetFile.exists()) {
if (!targetFile.getParentFile().exists()) {
targetFile.getParentFile().mkdirs();
}
targetFile.createNewFile();
}
// 用工具类把文件写入到服务器本地
FileUtil.inputStreamToFile(file.getInputStream(), targetFile);
}
/**
* 上传时获取MultipartFile的流暂存到服务器本地
* @param ins
* @param file
*/
public static void inputStreamToFile(InputStream ins, File file) {
try {
if (!file.exists()) {
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
file.createNewFile();
}
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.flush();
os.close();
ins.close();
} catch (Exception e) {
log.catching(e);
}
}