文件上传接口
使用@CrossOrigin注解解决跨域
@CrossOrigin
@RequestMapping("/fileUpload")
@RestController
@Api(tags = "文件上传接口 @ 季瓜", description = "FileUploadController")
public class FileUploadController {
private static final Logger logger = LoggerFactory.getLogger(FileUploadController.class);
@PostMapping("/uploadWork")
@ApiOperation("上传文件")
public synchronized String uploadWork(HttpServletRequest request, @RequestParam(value = "file", required = false) MultipartFile file) {
try {
request.setCharacterEncoding("UTF-8");
String user = request.getParameter("user");
String fileSavaUrl = "D:/exportDir";
String time = DateUtil.dataToUrl(new Date());
user = time + "/" + user;
String fileName = file.getOriginalFilename();
int unixSep = fileName.lastIndexOf('/');
int winSep = fileName.lastIndexOf('\\');
int pos = (winSep > unixSep ? winSep : unixSep);
if (pos != -1) {
fileName = fileName.substring(pos + 1);
}
String fold = fileSavaUrl + "/" + user + "/" + DateUtil.dataToFolder(new Date()) + "/" + fileName;
File folder = new File(fold);
if (!folder.getParentFile().exists()) {
folder.getParentFile().mkdirs();
}
FileInputStream in = null;
FileOutputStream out = null;
FileChannel fileChannel = null;
FileChannel fileChannelout = null;
try {
out = new FileOutputStream(folder);
in = (FileInputStream) file.getInputStream();
fileChannel = in.getChannel();
fileChannelout = out.getChannel();
ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
while (true) {
byteBuffer.clear();
int r = fileChannel.read(byteBuffer);
if (r == -1) {
break;
}
byteBuffer.flip();
while (byteBuffer.remaining() > 0) {
fileChannelout.write(byteBuffer);
}
}
} catch (Exception e) {
e.printStackTrace();
logger.error("文件传输错误:" + DateUtil.dataToString(new Date()) + ":--->>>" + e.getMessage());
} finally {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (fileChannel != null) {
fileChannel.close();
}
if (fileChannelout != null) {
fileChannelout.close();
}
}
if (file.isEmpty()) {
logger.error(user + ":上传空文件 -->>" + DateUtil.dataToString(new Date()));
return "EMPTY";
}
} catch (Exception e) {
e.printStackTrace();
logger.error("上传文件错误:" + DateUtil.dataToString(new Date()) + ":--->>>" + e.getMessage());
return "EXCEPTION";
}
return "SUCCESS";
}