@RequestMapping(value = "upload", method = RequestMethod.POST)
@ResponseBody
public JsonMsgBean upload(
HttpServletRequest request, HttpServletResponse response, Principal principal) throws Exception {
MultipartRequest multipartRequest = (MultipartRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
List<Attach> retList = new ArrayList<Attach>();
fileMap.values().forEach(attach -> {
String dir = "D:\\flows";
String fileName = attach.getOriginalFilename();
File file = new File(dir);
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return (name.endsWith("txt") || name.endsWith("log")) && !name.equals(fileName);
}
});
if (files != null && files.length > 0) {
String path = dir + File.separator + fileName;
if (files[0].renameTo(new File(path))) {
new Thread(()->{
OutputStream os=null;
InputStream is=null;
try {
os = new FileOutputStream(path);
is=attach.getInputStream();
// FileCopyUtils.copy(attach.getBytes(), os);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
}
);
return new JsonMsgBean(true, "200", retList);
}
以上代码保证第一次上传成功,第二次是因为源文件不存在导致,确实是源文件不存在,但是源文件的目录是 C:\Users\Administrator\AppData\Local\Temp\,根本获不得上传文件的真实路径,如果想要多线程上传文件,有办法吗