技术栈:java
SpringBoot+mybatis+mysql+freemarkermysql
以前将图片存储在项目的路径中,致使每次上传后都须要从新编译才能读出图片,查阅相关资料后发现,图片须要单独的路径进行存储,并对路径进行配置。web
controller:sql
@RequestMapping(value = "/uploadImg",method = RequestMethod.POST) @ResponseBody public Map uploadImg(@RequestParam(value = "file",required = false) MultipartFile file){ return productServiceImp.uploadImg(file); }
service:数据库
@Value("${absoluteImgPath}") String absoluteImgPath; @Value("${sonImgPath}") String sonImgPath; @Value("${server.port}") String port; @Value("${host}") String host; @Override public Map<String, String> uploadImg(MultipartFile file) { Map<String,String> map = new HashMap<>(); if(file.isEmpty()){ map.put("code","500"); map.put("msg","图片不能为空"); return map; } String originalFilename = file.getOriginalFilename(); //随机生成文件名 String fileName = RandomUtils.createRandomString(10) + originalFilename; File dest = new File(absoluteImgPath + fileName); String imgUrl = sonImgPath +fileName; try{ file.transferTo(dest); map.put("code","200"); map.put("msg","上传成功"); map.put("imgUrl",imgUrl); return map; }catch (IllegalStateException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } return map; }
随机数生成:mybatis
public class RandomUtils { private static final String charlist = "0123456789"; public static String createRandomString(int len) { String str = new String(); for (int i = 0; i < len; i++) { str += charlist.charAt(getRandom(charlist.length())); } return str; } public static int getRandom(int mod) { if (mod < 1) { return 0; } int ret = getInt() % mod; return ret; } private static int getInt() { int ret = Math.abs(Long.valueOf(getRandomNumString()).intValue()); return ret; } private static String getRandomNumString() { double d = Math.random(); String dStr = String.valueOf(d).replaceAll("[^\\d]", ""); if (dStr.length() > 1) { dStr = dStr.substring(0, dStr.length() - 1); } return dStr; } }
application.properties:app
absoluteImgPath = C://Users/Administrator/Desktop/ECS/images/ sonImgPath = /images/
路径配置:dom
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Value("${absoluteImgPath}") String absoluteImgPath; @Value("${sonImgPath}") String sonImgPath; @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/web/images/"); registry.addResourceHandler(sonImgPath + "**").addResourceLocations("file:"+absoluteImgPath); } }
数据库存储的url形式:ide
/images/9045969040S90.jpg