`

设置文件下载时客户端显示的附件中文名

阅读更多
/**
   * 设置下载文件中文件的名称
   * 
   * @param filename
   * @param request
   * @return
   */
  public static String encodeFilename(String filename, HttpServletRequest request) {
    /**
     * 获取客户端浏览器和操作系统信息
     * 在IE浏览器中得到的是:User-Agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; Alexa Toolbar)
     * 在Firefox中得到的是:User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.10) Gecko/20050717 Firefox/1.0.6
     */
    String agent = request.getHeader("USER-AGENT");
    try {
      if ((agent != null) && (-1 != agent.indexOf("MSIE"))) {
        String newFileName = URLEncoder.encode(filename, "UTF-8");
        newFileName = StringUtils.replace(newFileName, "+", "%20");
        if (newFileName.length() > 150) {
          newFileName = new String(filename.getBytes("GB2312"), "ISO8859-1");
          newFileName = StringUtils.replace(newFileName, " ", "%20");
        }
        return newFileName;
      }
      if ((agent != null) && (-1 != agent.indexOf("Mozilla")))
        return MimeUtility.encodeText(filename, "UTF-8", "B");

      return filename;
    } catch (Exception ex) {
      return filename;
    }
  }

 

2
0
分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    vc++ 开发实例源码包

    18:单线程下载时不能创建临时文件. 19:下载流文件(rm,Media Player). Notepad++ V5.6.8 源码! 如题。 OA精灵代码 c++版 一套oa系统。 ocxdlgtest dll的一个实例。 OD反汇编引擎(带VC修改版和原版) 如题。主要...

    vc++ 应用源码包_1

    内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...

    vc++ 应用源码包_6

    内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...

    vc++ 应用源码包_2

    内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...

    vc++ 应用源码包_5

    内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...

    vc++ 应用源码包_3

    内含(重启、图片操作、ip操作、键盘与鼠标、客户端以及服务端、文件传输等实例源码) 多个VC++加密解密算法库(CRYPT++) 详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加...

    风越ASP代码生成器 2.4

    发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    C#开发典型模块大全

    23.5.1 启动客户端时检测是否有新版本 626 23.5.2 从FTP服务器下载指定版本 628 23.5.3 定时升级设置 630 第24章 Windows应用程序打包与部署境 24.1 Windows Installer简介 634 24.2 Windows应用程序部署...

    风越ASP代码生成器FireAspCreatorv2.9.rar

    发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ★ ...

    飞鸽传书(IPMessenger) 源码

     窗口大小设置, 固定窗口位置, 列表显示设置.  - 在用户名上点击右键, 可设置其显示优先级  优先级按由小到大的顺序排序  - 通过设置显示优先级, 可将经常联系的用户至于列表顶端,  或者隐藏不需要联系的用户 ...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ...

    风越.net代码生成器v2.9

    发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ...

    94KKBBS v1.19 简体中文版

    论坛的安装步骤 将论坛代码压缩包解开包,保持文件的相对位置,将解压后得到的全部目录、文件包括所有空目录上传到你的服务器上,论坛基本上就可以使用了,您可以进入后台管理设置一些参数。 默认的...

    风越ASP代码生成器2.8

    发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ...

    风越.net代码生成器 v3.5

    发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ...

    风越asp代码生成器 V3.5

    发送邮件功能,设置字段为邮件对应信息,可发送附件 ★ (繁、简、英)单语言版本 ★ 多语言页面实时翻译功能(默认:繁、简、英,可增加其它语言) ★ 多语言编码支持(GB2312/UTF8) ★ 生成提交校验码图片 ...

Global site tag (gtag.js) - Google Analytics