备忘,遇到在URl中接收类似文件路径的参数 /put/test/dy_only/test.jpg
理想状态 put 作为上传空间,test/dy_only/test.jpg 作为文件名。
Controller 里使用正则正常匹配
@PutMapping(value = "{dir}/**")
public void putFile(HttpServletRequest request, HttpServletResponse response,
@PathVariable String dir) {
String fileName = getExtractPath(request);
}
使用如下方法获取所需要的模式串。
private String getExtractPath(final HttpServletRequest request) {
//用于获取请求全路径: /demo/put/test/dy_only/test.jpg
String path = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
//用户获取匹配到controller的路径:/demo/{dir}/**
String bestMatchPattern = (String) request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
//使用 AntPathMatcher 匹配所需要的URL : test/dy_only/test.jpg
return new AntPathMatcher().extractPathWithinPattern(bestMatchPattern, path);
}
↓ 从request里面取出的两个参数 ↓
request