前端传递的路径变量不同情况的后端处理接收方式:
@GetMapping("/static/upload/{fileName}")
publi void getPath(@PathVariable String fileName) {
System.out.println("获取到的fileName:"+fileName);
假设前端url请求的链接是: /static/upload/test
这样后端接收的fileName就是:test
但是这样遇到特殊情况时,如前端传递的fileName中存在.等特殊字符,
如:前端url请求的链接是:/static/upload/test.pdf
但是后端只能获取test,但前端传递的fileName是test.pdf
所以后端Controller需要改进路径变量书写方式:
注意:
{fileName:.+} 表示对于文件名中包含 “.” 等特殊字符的情况也能够正确地映射到方法参数 fileName 上。
//请注意,使用占位符方式处理参数时,必须谨慎处理用户输入,以免发生路径遍历、文件读取等安全问题。还需考虑和处理不同文件类型、大小、扩展名等方面的问题,以确保系统的健壮性和安全性。
所以改进的后端controller的书写方式如下:
@GetMapping("/static/upload/{fileName:.+}")
publi void getPath(@PathVariable String fileName) {
System.out.println("获取到的fileName:"+fileName);
如:前端url请求的链接是:/static/upload/test.pdf
这种情况下,前端传递的fileName是test.pdf,后端也能正确获取到:test.pdf字符串