springboot exe mime type后缀检查
时间: 2023-12-17 11:04:48 浏览: 180
在Spring Boot中,可以通过配置类WebMvcConfigurer添加一个拦截器来实现MIME类型和后缀检查。
首先,创建一个自定义的拦截器类,例如MyInterceptor:
```java
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestURI = request.getRequestURI();
String extension = StringUtils.getFilenameExtension(requestURI);
String mimeType = new Tika().detect(requestURI);
if (!isValid(extension, mimeType)) {
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid file type");
return false;
}
return true;
}
private boolean isValid(String extension, String mimeType) {
// check if extension and MIME type are valid
return true;
}
}
```
然后,在配置类中注册拦截器并添加拦截规则:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/static/**");
}
}
```
这里的拦截规则是拦截所有请求("/**"),但是排除静态资源请求("/static/**")。在拦截器中,我们使用StringUtils.getFilenameExtension方法获取请求URI的后缀,然后使用Apache Tika检测MIME类型。最后,我们根据自定义的isValid方法判断请求是否合法,如果不合法,则返回HTTP状态码400(Bad Request)。
阅读全文