SpringBoot的2种图片获取方式

本文介绍了在SpringBoot中两种获取图片的方法。第一种是静态资源加载方式,包括通过配置文件和配置类来设置静态资源路径。第二种是HttpServlet编程式,通过编写Controller直接处理图片请求。示例代码详细展示了实现过程。
摘要由CSDN通过智能技术生成

一、静态资源加载式

通过配置静态文件目录的方式,直接访问图片.

方法1:配置文件配置

#静态资源访问路径
spring.mvc.static-path-pattern=/image/**
#静态资源映射路径
spring.resources.static-locations=classpath:/(实际存放目录)

如果是yml配置文件,改下格式就行

方法2:配置类配置的方式

我这个是springboot2.1.4
网上大多数都用的低版本方式配置的,但是那个方式已经被废弃

@Configuration
public class AddStaticResourceConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/image/**")
        .addResourceLocations("file:/Users/admin/upload/");
        //说明一下这里的路径是linux/mac的,windows的要改下风格和加上磁盘
    }
}

二、HttpServlet编程式(不需要配置文件)

@Controller
public class ImageApi {

    /**
     * 获取图片的第二种方式,这种方式不需要配置,调用接口返回即可
     * @param request
     * @param response
     * @return
     */
    @GetMapping("/photos/**")
    public String getImage(HttpServletRequest request, HttpServletResponse response) {
        File file = getImageFile(request.getRequestURI().substring(7));
        if (file == null) {
            return "404";
        }

        response.setContentType("image/" + file.getName().substring(file.getName().lastIndexOf(".") + 1));
        try {
            ServletOutputStream out = response.getOutputStream();
            out.write(FileUtils.readFileToByteArray(file));
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

	//说明一下:我这里的图片目录是存储到项目目录内的,本机开发的时候免得图片忘记存哪儿去了
	//实际开发的时候因为最后整个项目是要打包的,所以建议不要使用这种方式获取目录
    private static final String ROOT = System.getProperty("user.dir");
    private static final String IMAGE_PATH = ROOT+"/upload";
	
    private File getImageFile(String id) {
        File file = new File(IMAGE_PATH+id);
        if (file.exists()){
            return file;
        }else {
            return null;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值