springboot图片上传与回显

最近在做一个博客系统,在做写博客板块的时候,考虑如何将图片上传以及回显。在此记录一下

上传很简单,直接post文件即可

代码如下

@ResponseBody
    @PostMapping("/upload")
    public String upImg(List files, HttpServletRequest request){
       
        //JDK 1.7提供的files
        if(files!=null&&files.size()>0){
            //循环获取file数组中得文件
            for(int i = 0;i

回显也容易,springboot提供了一个ResourceLoader 接口,只要实现默认的DeafultResouceLoader即可

代码如下

private ResourceLoader resourceLoader=new DefaultResourceLoader();
@ResponseBody
@GetMapping(value = {"/getImgs/{filename}"},produces = MediaType.IMAGE_JPEG_VALUE)
public ResponseEntity getImgs(@PathVariable("filename") String fileName){

     return ResponseEntity.ok(resourceLoader.getResource("file:"+Paths.get(uploadPath+"\\blog",fileName).toString()));
}

这样就可以通过localhost://getImgs/{图片名},直接访问了,也可以放在中。

 

后续我会开源我做的博客系统,包括后台管理,客户web端,以及android端。菜鸟勿喷,我练练手。

 

遇到一个问题,如果图片是刚上传的,用此方式并不能回显,会出现空白,不知道为什么。所以改用如下方式

 @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
        super.addResourceHandlers(registry);
        System.out.println(uploadPath);
            registry.addResourceHandler("/getImgs/blog/**").addResourceLocations("file:"+uploadPath+"blog/");
        registry.addResourceHandler("/getImgs/user/**").addResourceLocations("file:"+uploadPath+"user/    ");

    }

增加spring的静态资源映射,这样就可以直接返回图片了。所以不用再像上面那样,单独写一个路由来返回图片了。

你可能感兴趣的:(springboot图片上传与回显)