问题描述

  问题是这样的,我写了一个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实现文件下载时,请求路径中的扩展名被省略的更多相关文章

  1. jmeter接口测试-GET请求路径中包含特殊字符或中文导致Response400报错

    问题描述:接口测试中异常用例GET请求路径中包含特殊字符或中文,运行jmeter会报错,取样器中只能看到Response400,响应结果为空 解决思路: 对于通过BODY发送的中文内容可以用Jmete ...

  2. Window中显示文件扩展名

    积少成多,欢迎大家关注我的微信公众号,共同探讨Java相关技术 本文主要介绍如何在Windows系统中怎么让文件显示扩展名. 操作步骤 打开控制面板 找到外观和个性化 找到文件资源管理器选项 单击,然 ...

  3. python获取某路径下某扩展名的所有文件名和文件个数

    # -*- coding: utf-8 -*- # @Time : 19-1-10 下午10:02 # @Author : Felix Wang import os def get_file_coun ...

  4. python工具程序一、复制目录中指定扩展名的文件

    #!/usr/bin/env python # coding:utf-8 # xcopy Lib directory and rename all files to *d.lib import os ...

  5. C# 导出Excel文件 所导出文件打开时提示“Excel文件格式与扩展名指定格式不一致”

    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); ...

  6. SpringMVC 请求路径结尾存在.使用@PathVariable访问路径内容,路径参数获取不准确的问题

    SpringMVC采用Get方式请求资源时,如果请求路径的结尾中带有小数点(.)时,同时使用@PathVariable访问路径内容时,请求路径中最后一个小数点及其后面的内容会被Spring截断丢弃比如 ...

  7. SpringMVC注解汇总(二)-请求映射规则

    接上一节SpringMVC注解汇总-定义 讲到Httpy请求信息 URL路径映射 1)普通URL路径映射 @RequestMapping(value={"/test1", &quo ...

  8. tomcat对请求路径的匹配过程(原创)

    1.匹配服务 如果有两个应用,一个应用只能通过80端口访问,另一个应用只能通过8080端口访问,这种情况下,可以分开两个服务,然后分别创建80端口和8080端口的连接器. 2.匹配主机 一个服务下配置 ...

  9. yum中baserul路径中的空格

    配置yum源时,比如指定本地挂载的光盘时,路径中包含空格.在不使用链接的情况下,用"\"进行转义不行,把路径加单.双引号也不可行.正确做法是把空格用%20代替.同理,其他不可识别的 ...

随机推荐

  1. 接口自动化:HttpClient + TestNG + Java(四) - 封装和测试post方法请求

    在上一篇中,我们对第一个自动化接口测试用例做了初步优化和断言,这一篇我们处理POST请求. 4.1 发送POST方法请求 post方法和get方法是我们在做接口测试时,绝大部分场景下要应对的主要方法. ...

  2. JavaScript一看就懂(3)数组

    定义数组 var a = [1, 2, 3]; typeof a; //"object", 数组是对象 a.length; //数组长度 相关操作 a[0]; //下标访问 a.p ...

  3. 深度学习之卷积神经网络(CNN)详解与代码实现(二)

    用Tensorflow实现卷积神经网络(CNN) 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10737065. ...

  4. Docker最全教程之Ubuntu下安装Docker(十四)

    前言 Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,应用很广.本篇主要讲述Ubuntu下使用SSH远程登录并安装Docker,并且提供了Docker安装的两种方式,希望对大家有所帮 ...

  5. postgresql如何让主键自增

    法一: Sql代码 收藏代码 CREATE TABLE customers ( customerid SERIAL primary key , companyname character varyin ...

  6. C#列表页面

    前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Index.aspx ...

  7. 2.python中self详解(程序适用于python3版本)

    先介绍下Python中的类和实例面向对象最重要的概念就是类(class)和实例(instance),类(class)是抽象的模板,比如学生这个抽象的事物,可以用一个Student类来表示.而实例是根据 ...

  8. 使用 MSIX 打包 DotNetCore 3.0 客户端程序

    如何你希望你的 WPF 程序能够以 Windows 的保护机制保护起来,不被轻易反编译的话,那么这篇文章应该能帮到你. 介绍 MSIX 是微软于去年的 Windows 开发者日峰会 上推出的全新应用打 ...

  9. Spring注解IOC/DI(4)

    2019-03-08/11:10:17 演示:使用注解的方式完成注入对象中的效果 注解参考链接:https://www.cnblogs.com/szlbm/p/5512931.html Spring中 ...

  10. 《JavaScript高级程序设计》笔记:DOM(十)

    Node类型 nodeType以下是一些重要的nodeType的取值:1: 元素element2: 属性attr3: 文本text8: 注释comments9: 文档document nodeName ...