有一项任务是在Spring MVC中将文件路径作为@PathVariable
传递给具有GET
请求的REST服务。
我们可以使用POST
在JSON中发送文件路径字符串来轻松完成。
我们如何处理GET
请求以及此类@Controller
?
@RequestMapping(value = "/getFile", method = RequestMethod.GET)
public File getFile(@PathVariable String path) {
// do something
}
请求:
GET /file/getFile/"/Users/user/someSourceFolder/8.jpeg"
Content-Type: application/json
答案 0 :(得分:4)
你应该像这样定义你的控制器:
@RequestMapping(value = "/getFile/{path:.+}", method = RequestMethod.GET)
public File getFile(@PathVariable String path) {
// do something
}
答案 1 :(得分:1)
确定。 你用来获得模式。 发送get pattern url。
使用@RequestParam。
@RequestMapping(value = "/getFile", method = RequestMethod.GET)
public File getFile(@RequestParam("path") String path) {
// do something
}
如果您使用@PathVariable。
@RequestMapping(value = "/getFile/{path}", method = RequestMethod.POST)
public File getFile(@PathVariable String path) {
// do something
}
答案 2 :(得分:1)
我所做的工作与在Spring中下载/上传文件的相对路径有关。
@RequestMapping(method = RequestMethod.GET, path = "/files/**")
@NotNull
public RepositoryFile get(@PathVariable final String repositoryId,
@PathVariable final String branchName,
@RequestParam final String authorEmail,
HttpServletRequest request) {
String filePath = extractFilePath(request);
....
}
我在控制器中创建的实用函数:
private static String extractFilePath(HttpServletRequest request) {
String path = (String) request.getAttribute(
HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
String bestMatchPattern = (String) request.getAttribute(
HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE);
AntPathMatcher apm = new AntPathMatcher();
return apm.extractPathWithinPattern(bestMatchPattern, path);
}