2 xiaoming dai xiaoming_dai 于 2016.03.12 22:00 提问

springmvc response设置下载文件名无效

我在返回的时候设置了response的header,但是下载下来的文件并不是我设置的名字,而是我的请求名称

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename=down.xls");

表单为

<form method="post" action="/upload" enctype="multipart/form-data">
    <input type="file" name="urls" title="请选择上传文件">
    <input type="submit" title="提交"/>
</form>

实现功能是上传一个文件,对文件内容进行分析后,返回结果文件

但是我返回下载的文件名是upload,而且没有后缀

难道是哪里配错了?求大神指点

完整代码:
https://github.com/MartinDai/TBSpider

1个回答

u013772876
u013772876   2016.03.15 19:43
已采纳

我的是这样实现的!

 @RequestMapping(value = "/discover/template", method = RequestMethod.GET)
    public void download(HttpServletRequest request, HttpServletResponse response) {
        response.setHeader("Content-disposition", "attachment;filename=template.csv");
        String targetPath = request.getRealPath("/") + "/template/";
        final String sourceFileName = "template.csv";
        final String targetFileName = "template_temp.csv";
        IOUtils.generateFile("UTF-8", "gbk", targetPath + sourceFileName, targetPath + targetFileName);
        try {
            IOUtils.download(response, targetPath, targetFileName, sourceFileName);
            IOUtils.deleteFile(targetPath + targetFileName);
            logger.info("Download host import template file ok [" + sourceFileName + "]");
        } catch (IOException e) {
            logger.error("Download host import template file error , [filename : " + targetFileName + "]", e);
        }
    }
xiaoming_dai
xiaoming_dai 我把那两行代码放在输出流之后执行了,所以没生效
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
response设置下载文件名无效。因为response 参数设置要在out对象加入数据之前
刚刚通过servlet 的 response  的 out对象回传文件时, 回传回去的文件一直都无法给他命名,显示的是我自己的类名。 因为我先out.write();再设置response参数  这样不行。 必须先设置response参数 如                                 response.setContentType("applic
[Java]response.setHeader()下载中文文件名乱码问题
1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cache-Control , Connection , Data , Pragma , Trailer , Transfer-Encoding , Upgrade (2)请求头 用于在请求消息中向服务器传递附加信息,
javaweb之response实现文件下载(文件名是中文名需要经过url编码)
package test.response; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URLEncoder; im
【JSP开发】关于下载文件response的设置
package cn.edu.Response; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.URLEncod
springMVC固定文件名下载
jsp页面 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> 单个文件下载 单个文件下载 img1-lg.jpg Controller层 package lesson5.com.jkxy.springmvc.controller; import
( response.setHeader()下载中文文件名乱码
( response.setHeader()下载中文文件名乱码问题
关于使用response.addHeader下载中文名乱码问题
<br />     首先介绍下我做项目时遇到的问题:java+flex项目在windows系统下编写测试运行的,在本地服务器上运行下载时文件名能正常显示中文,但是当把项目部署到linux服务器上运行的,下载文件的文件名出现乱码现象。<br />        response.addHeader("Content-Disposition","attachment;   filename=/""+ new String(("端口资源情况统计报表").getBytes(),"iso8859-1")+  "/"
文件下载中设置response的Header中的文件名为ISO-8859-1
response.addHeader( "Content-Disposition","attachment;filename=\"" + new String(attachment.getFileName().getBytes(),"iso-8859-1") + "\"");编码 http协议中header头,要求其内容必须为iso8859-1编码 为什么不直接对文件名进行编码 因为ISO88
SpringMVC @ResponseStatus 的用法
@ResponseStatus 用于修饰一个类或者一个方法,修饰一个类的时候,一般修饰的是一个异常类,如下, 声明一个异常类在类上面加上ResponseStatus注解,就表明,在系统运行期间,抛出AuthException的时候,就会使用这里生命的 error code 和 error reasoon 返回给客户端,提高可读性。 package com.kolin.sample;
response.setHeader()设置下载中文文件名乱码问题
1. HTTP消息头 (1)通用信息头 即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data,Pragma 主要: Cache-Control , Connection , Data , Pragma , Trailer , Transfer-Encoding , Upgrade (2)请求头 用于在请求消息中向服务器传递附加信息,