文件下载的文件名中文和空格处理

2013-05-21  来源:本站原创  分类:工作日志  人气:0 

今天遇到一个问题,文件下载,如果有空格,浏览器下载的时候会丢失文件名 - -。

之前下载的代码:

@RequestMapping("download")
    public void downloadFile(long fileId, HttpServletResponse response){
        AttachedFile attachedFile = attachedFileManager.getFile(fileId);
        String filePath = UPLOAD_PATH + File.separatorChar + attachedFile.getWebAccessPath();

        String fileName = null;
        try {
            fileName = new String((attachedFile.getFileName()).getBytes("UTF-8"), "iso8859-1");

            response.reset();
            response.setHeader("Content-Disposition", "attachment;filename="+ fileName);// 指定下载的文件名
            response.setContentType("application/octet-stream; charset=UTF-8");
            //response.setContentType("application/vnd.ms-excel");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);

            InputStream is = new FileInputStream(filePath);
            OutputStream os = response.getOutputStream();
            byte[] b = new byte[1024];
            int length;
            while((length = is.read(b)) > 0) {
                os.write(b, 0, length);
            }
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Google之下,什么解决方案的都有。比如把文件名utf8加密(URLEncode),然后把“+”替换成%20,测试之后没用!

然后转成英文搜索,在stackoverflow发现一个方案。

response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");

这样确实很好用 - -. 记录下...以免别人以后找不到答案...

注意:fileName最后被双引号("")包起来了...

另外,文件名乱码的问题,看代码就好了,fileName被转码了一次。。。

相关文章
  • 文件下载的文件名中文和空格处理 2013-05-21

    今天遇到一个问题,文件下载,如果有空格,浏览器下载的时候会丢失文件名 - -. 之前下载的代码: @RequestMapping("download") public void downloadFile(long fileId, HttpServletResponse response){ AttachedFile attachedFile = attachedFileManager.getFile(fileId); String filePath = UPLOAD_PATH + Fi

  • 解决android 下载时文件名中文和空格问题 2013-02-27

    如果不对连接进行处理 下载就会报错 要想解决这个问题 只需对你的url 进行编码然后替换空格用编码表示 //对路径进行编码 然后替换路径中所有空格 编码之后空格变成"+"而空格的编码表示是"%20" 所以将所有的"+"替换成"%20"就可以了 url = URLEncoder.encode(urlStr,"utf-8").replaceAll("+", "%20");

  • android 下载时文件名是中文和空格会报错解决方案 2014-02-10

    项目中遇到了下载文件文件名是中文而且还有空格如果不对连接进行处理下载就会报错要想解决这个问题只需对你的url进行编码然后替换空格用编码表示,感兴趣的朋友可以详细了解下 项目中遇到了下载文件文件名是中文而且还有空格如果不对连接进行处理下载就会报错要想解决这个问题只需对你的url 进行编码然后替换空格用编码表示 //对路径进行编码 然后替换路径中所有空格 编码之后空格变成"+"而空格的编码表示是"%20" 所以将所有的"+"替换成"%20&

  • 两个脚本,一个替换文件名中的空格,一个转换mp3 2012-11-07

    替换文件名中空格为下划线"_" #!/bin/bash if [ $# -lt 1 ];then echo "Usage `basename $0` filemane" exit 1 fi for i in "$*" do base_name=`basename "$1"` dir_name=`dirname "$1"` no_space=`echo "$base_name" |sed

  • [文件系统]删除文件名中含有空格的文件 2014-07-08

    ls | sed 's/^.*/mv "&" \`echo & \| sed "s\/ \/\/g"\`/g' | sh >/dev/null 2>&1

  • python实现去除下载电影和电视剧文件名中的多余字符的方法 2014-04-22

    这篇文章主要介绍了python实现去除下载电影和电视剧文件名中的多余字符的方法,可以批量修改视频文件名称,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python实现去除下载电影和电视剧文件名中的多余字符的方法,是一个非常实用的技巧,分享给大家供大家参考.具体如下: 有时候我们讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),搞得文件名好长!不便于查看,这时候就可以使用下面的Python代码,自行修改即可. 具体实现代码如下: #!\usr\bin\env python #

  • PowerShell命令中包含空格如何运行? 2014-04-23

    这篇文章主要介绍了PowerShell命令中包含空格如何运行?即在PowerShell中运行包含空格的命令的方法,需要的朋友可以参考下 在PowerShell中,可以直接运行命令.包括.exe结尾的..com结尾的可执行程序,包括.bat结尾的..cmd结尾的批处理程序,还有.vbs结尾的..ps1结尾的脚本程序.均可以使用如下方式运行程序: <程序文件名>.<后缀> [参数列表] 但是请注意,这里的<程序文件名>其实是指的一个路径,可以是相对的,也可以是绝对的.当我们

  • php做下载文件的实现代码及文件名中乱码解决方法 2014-08-25

    php做下载文件的实现代码及文件名中乱码解决方法,需要的朋友可以参考下. 最近有人问我做下载文件的方法,对于php方法如下: <?php header("Content-Type: application/force-download"); header("Content-Disposition: attachment; filename=ins.jpg"); readfile("imgs/test_Zoom.jpg"); ?> 第一

  • 解析如何在PHP下载文件名中解决乱码的问题 2015-02-14

    本篇文章是对如何在PHP下载文件名中解决乱码的问题进行了详细的分析介绍,需要的朋友参考下 通过把Content-Type设置为application/octet-stream,可以把动态生成的内容当作文件来下载,相信这个大家都会.那么用Content-Disposition设置下载的文件名,这个也有不少人知道吧.基本上,下载程序都是这么写的: $filename = "document.txt"; header('Content-Type: application/octet-stre

  • 在PHP下载文件名中解决乱码 2012-10-10

    通过把Content-Type设置为application/octet-stream, 可以把动态生成的内容当作文件来下载,相信这个大家都会. 那么用Content-Disposition设置下载的文件名, 这个也有不少人知道吧. 基本上,下载程序都是这么写的: <?php $filename = "document.txt"; header('Content-Type: application/octet-stream'); header('Content-Dispositio

  • jQuery选择器中含有空格的使用示例及注意事项 2013-11-09

    选择器中的空格是不容忽视的,多一个空格或少一个空格也许得到的结果会截然不同的,下面以一个示例为大家详细介绍下到底有什么不同,感兴趣的朋友额可以参考下 此文摘自<锋利的jQuery>,另外添加了一点自己的东西 选择器中的空格是不容忽视的,多一个空格或少一个空格也许得到的结果会截然不同的.下面来看一个例子. 先构建如下的HTML代码: <div class="test"> <div style="display:none;">Jque

  • Java中去除字符串中所有空格的几种方法 2013-11-11

    这篇文章介绍了Java中去除字符串中所有空格的几种方法,有需要的朋友可以参考一下 JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(s

  • 支持中文和其他编码的php截取字符串函数分享(截取中文字符串) 2013-11-21

    这篇文章主要介绍了支持中文和其他编码的php截取字符串函数示例(截取中文字符串),需要的朋友可以参考下 简单的字符串截取方法,支持中文和其他编码,传入相对应的参数直接调用就可以了 /** * 字符串截取,支持中文和其他编码 * @static * @access public * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $charset

  • python中去空格函数的用法 2013-11-22

    这篇文章主要介绍了python中去空格函数的用法,很实用的技巧,需要的朋友可以参考下 本文简单介绍了Python中去空格函数的用法,这是一个很实用的函数,希望对大家的Python程序设计有所帮助.具体分析如下: 在Python中字符串处理函数里有三个去空格的函数: strip 同时去掉左右两边的空格 lstrip 去掉左边的空格 rstrip 去掉右边的空格 具体示例如下: >>>a=" gho stwwl " >>>a.lstrip() 'gho

  • php中替换字符串中的空格为逗号','的方法 2014-02-13

    这篇文章主要介绍php中替换字符串中的空格为逗号,的方法.感觉还不错,大家可以参考下 今天在网查到一篇介绍php中替换字符串中的空格为逗号','的文章,作个日记保存下来. <pre name="code" class="php"><? php /* * 关键词中的空格替换为',' */ public function emptyreplace($str) { $str = str_replace(' ', ' ', $str); //替换全角空格为

  • Shell实用技巧:快速去除字符串中的空格 2014-03-19

    这篇文章主要介绍了Shell实用技巧:快速去除字符串中的空格,本文给出了3种方法,分别讲解了删除行首空格.删除行末空格.删除所有空格等内容,需要的朋友可以参考下 在整理词库的过程中遇到 一个问题,有些其实是同一个关键词之关有空格的话,无法正常被去重,那么有没有办法能快快速去除这些字符中间的空格呢?经过百度一番,找到一个解决办法,记录一下. 效果如下图所示,图上半部分是示例文本,下半部分就是用shell去掉空格后的效果.其中用到就是下面第3个方法. 在UNIX上使用sed命令进行字符串处理中常常遇

  • xml中的空格之完全解说 2014-03-25

    提示:我提取了<xslt从入门到精通>中关于空格解释的核心部分,借以抛砖引玉,希望大家踊跃参与讨论.谈谈你对空格的理解. 只适合对xml文件结构有一定了解的学者,不适合初学者.请按从上至下的顺序阅读. 对html文件而言,空格不重要:然而,对xml而言,默认立场就是要保留空格结点(空格结点的解释见下文). 根据xml规范的规定,所谓空格是四种字符的任意组合序列: ----------------------- 空格字符(space),对应字符值为 #x20 返回字符(Carriage Retu

  • php 中文和编码判断代码 2014-08-16

    php判断中文和编码有关 gbk是双字节,utf8是三字节,可以根据 中文的范围来判断 编码范围1. GBK (GB2312/GB18030) \x00-\xff GBK双字节编码范围 \x20-\x7f ASCII \xa1-\xff 中文 \x80-\xff 中文 2. UTF-8 (Unicode) \u4e00-\u9fa5 (中文) \x3130-\x318F (韩文 \xAC00-\xD7A3 (韩文) \u0800-\u4e00 (日文) ps: 韩文是大于[\u9fa5]的字符

  • java去除字符串中的空格.回车.换行符.制表符的小例子 2014-10-19

    java去除字符串中的空格.回车.换行符.制表符的小例子,需要的朋友可以参考一下 import java.util.regex.Matcher; import java.util.regex.Pattern; /** * @author lei * 2011-9-2 */ public class StringUtils { public static String replaceBlank(String str) { String dest = ""; if (str!=null)

  • JS判断字符串长度的5个方法(区分中文和英文) 2014-12-21

    这篇文章主要介绍了JS判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下 目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; i<this.length; i++) { if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) { len += 2; } else { len ++;