@Configuration
public class FileConfig implements WebMvcConfigurer {
@Value("${filePath}")
private String filePath;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/file/**").addResourceLocations("file:"+filePath);
}
@Bean
public Service service(){
return new Service();
}
}
@Value("${filePath}")
private String uploadUrl;
@ApiOperation(value = "上传图片")
@ApiImplicitParam(name = "file", value = "上传图片", required = true, dataType = "file", paramType = "form")
@PostMapping("/uploadFile")
public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
long startTime = System.currentTimeMillis();
ResponseEntity<String> response = null;
log.info("~~~进入uploadFile方法~~~开始上传图片,文件名为:{}", file.getOriginalFilename());
try {
String uploadFileName = file.getOriginalFilename();
if (!StringUtils.isEmpty(uploadFileName) && !uploadFileName.contains(".")) {
response = new ResponseEntity<>("请上传带后缀的完整文件名", HttpStatus.BAD_REQUEST);
return response;
}
String fileType = FileTypeUtil.getType(file.getInputStream());
log.info("上传的文件真实类型为:{}", fileType);
if ("jpg".equals(fileType) || "png".equals(fileType)
|| "gif".equals(fileType) || "bmp".equals(fileType)) {
String destFileName = FileUtil.uploadToLocal(file, uploadUrl, String.valueOf(System.currentTimeMillis()));
response = new ResponseEntity<>("/file/" + destFileName, HttpStatus.OK);
} else {
response = new ResponseEntity<>("支持的图片格式为jpg/png/gif/bmp", HttpStatus.BAD_REQUEST);
}
return response;
} catch (IOException e) {
log.error("uploadFile 上传图片 发生异常:{}", e.getMessage(), e);
response = new ResponseEntity<>(AesEncryptUtils.encryptAES("服务异常"), HttpStatus.INTERNAL_SERVER_ERROR);
return response;
} finally {
log.info("~~~uploadFile方法执行结束,耗时:{}秒,返回值为:{}~~~",
(float) (System.currentTimeMillis() - startTime) / 1000, response);
}
}