spring boot @PathVariable 获取斜杠/参数
备忘,遇到在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