1、配置类
@Configuration
public class MyBlogWebMvcConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//配置映射路径,/**是当前文件夹以及子文件夹
registry.addResourceHandler("/images/**").addResourceLocations("file:F://图片//");
}
}
2、工具类:动态获取ip端口以及服务名Content-Path(阿里云获取不到公网IP)
@Component
public class ImgUtils {
@Autowired
Environment environment;
public String getUrl() {
String hostIp = getHostIp();
String port = environment.getProperty("server.port");
String contextPath = environment.getProperty("server.servlet.context-path");
String url = "http://"+hostIp+":"+port+"/"+contextPath;
return url;
}
public String getHostIp() {
InetAddress localHost = null;
try {
localHost = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
}
String ip = localHost.getHostAddress(); // 返回格式为:xxx.xxx.xxx
return ip;
}
}
Controller层:
@RestController
@RequestMapping("/file")
public class FileController {
@Autowired
private ImgUtils imgUtils;
@PostMapping("/upload")
public Map<String,String> upload(MultipartFile fileName){
Map<String,String> resultMap = new HashMap<>();
try {
String originalFilename = fileName.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
originalFilename = UUID.randomUUID().toString()+suffix;
File createFile = new File("F:\\图片\\");
if (!createFile.exists()){
createFile.mkdirs();
}
File saveFile = new File(createFile,originalFilename);
fileName.transferTo(saveFile);
String url = imgUtils.getUrl();
String filename = url+"/images/" + originalFilename;
resultMap.put("msg","成功");
resultMap.put("url",filename);
return resultMap;
} catch (Exception e) {
e.printStackTrace();
}
resultMap.put("msg","失败");
return resultMap;
}
}
返回url示例:
// images是配置映射地址,通过以下路径可以访问图片资源,以及图片回显
http://IP:端口/服务名路径/images/ca512d95-c500-43ed-8db7-67abb3550aff.jpg