SpringBoot圖片上傳並將url存儲在數據庫

技術棧: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
相關文章
相關標籤/搜索