最近在做文件上传功能,查找了很多资料,下面记录一下,以下是springboot代码片段java代码
MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。
Controller
@PostMapping("/upload")
public MessagePackage uploadImage(MultipartFile file) {
recruitService.uploadImage(userId, userVO.getUserName(), file);
return new MessagePackage<>("上传图片成功!");
}
Service
public String uploadImage(String userId, String userName, MultipartFile file) {
FileOutputStream fileOutputStream = null;
InputStream inputStream = null;
String imageName = userName + getCurrentDate() + ".jpg";
String finalFileName = IMG_URL + userId + File.separator + imageName;
System.out.println(file.getOriginalFilename());
File outFile = new File(finalFileName);
if (outFile.getParentFile() != null || !outFile.getParentFile().isDirectory()) {
// 创建父文件夹
outFile.getParentFile().mkdirs();
}
try {
fileOutputStream = new FileOutputStream(outFile);
inputStream = file.getInputStream();
IOUtils.copy(inputStream, fileOutputStream);
} catch(IOException e) {
log.error(e.getMessage());
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.flush();
fileOutputStream.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
}
String imagePath = finalFileName;
return addUserImage(userId, imageName, imagePath);
}