SpringMVC实现文件下载时,请求路径中的扩展名被省略
2023-09-14 08:56:52 时间
问题描述
问题是这样的,我写了一个DownloadController,用来处理下载请求,预期效果如下:
客户端浏览器在访问URL --> http://localhost:8080/ssm/download/demo.txt,就会下载demo.txt文件。
代码如下:
@Controller public class DownloadController { @RequestMapping("/download/{fileName}") public String download(@PathVariable String fileName, HttpServletRequest req, HttpServletResponse resp) { String downloadDir = "/var/work/download"; File targetFile = new File(downloadDir, fileName); if (! targetFile.exists()) { req.setAttribute("msg", "文件不存在,路径:" + targetFile.getAbsolutePath()); return "error"; } // .....省略了剩余代码 } }
启动服务器之后,访问上面这个路径:http://localhost:8080/ssm/download/demo.txt,原本以为会立即下载文件demo.txt,但是却显示:文件不存在,路径:/var/work/download/demo。
于是我打印了一下接收到的fileName参数,发现打印的是“demo”,而不是“demo.txt”。
解决方式
将@RequestMapping注解的value修改一下,使用SpEL即可:
@RequestMapping("/download/{fileName:.+}")
这样就不会省略请求路径中的文件名了。
相关文章
- SpringMVC 实现文件上传与下载,并配置异常页面
- SpringMVC基础-09-文件上传(单文件、多文件上传)
- 【SpringMVC笔记】第一课-框架执行过程
- SpringMVC - 加载静态资源
- springmvc文件上传
- Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
- springMVC项目,application.xml springmvc-servlet.xml
- 使用springMVC实现文件上传和下载之环境配置与上传
- 【SpringMVC笔记01】SpringMVC介绍及搭建开发环境
- 【SpringMVC笔记11】SpringMVC实现文件上传和下载
- Java操作,springMVC上传的文件
- springMVC方法,导出/下载文件。
- springMVC+redis+redis自定义工具类 的配置
- springmvc 之 SpringMVC视图解析器
- springMVC项目异步错误处理请求Async support must be enabled on a servlet and for all filters involved in async
- 学习SpringMVC——从HelloWorld开始
- springMVC学习笔记三
- springmvc 请求无法到达controller,出现404
- SpringMVC上传文件的MultipartFile源码
- [springMVC学习]8、解决springmvc中文乱码问题
- [springMVC学习]3、rest请求方式,get、post、delete、put