技術棧: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