/**

* Desc:下载工具类

* @date 2014-6-26

*/

public class DownLoadUtil {

/**

* Desc:根据文件头判断请求来自的浏览器,以便有针对性的对文件名转码

* @date 2014-6-26

* @param request

* @return

* @throws Exception

*/

public static String transFileName(String fileName, HttpServletRequest request) {

String agent = request.getHeader("USER-AGENT");

//fileName = fileName.trim();//去首尾空格

try {

//根据文件头判断请求来自的浏览器,以便有针对性的对文件名转码

if(null != agent && -1 != agent.indexOf("theworld")){//世界之窗

fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1"); //解决下载的文件名中含有小括号转变义符%28%29

}else if(null != agent && -1 != agent.indexOf("MSIE 8.0")){//IE8

String lenFileName = URLEncoder.encode(fileName, "UTF-8");

if (lenFileName.length() > 150) {//文件名长度是否大于150个字符

fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");

} else {

fileName = URLEncoder.encode(fileName,"UTF-8").replace("+","%20");

}

}else if(null != agent && -1 != agent.indexOf("MSIE 7.0") && -1 != agent.indexOf("SE 2.X MetaSr 1.0")){//sogo浏览器

fileName = URLEncoder.encode(fileName,"UTF-8").replace("+","%20");

}else if(null != agent && (-1 != agent.indexOf("SV1") || -1 != agent.indexOf("360SE"))){//360安全浏览器

String lenFileName = URLEncoder.encode(fileName, "UTF-8");

if (lenFileName.length() > 150) {//文件名长度是否大于150个字符

fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");

} else {

fileName = URLEncoder.encode(fileName,"UTF-8").replace("+","%20");

}

}else if(null != agent && -1 != agent.indexOf("Chrome")){//google

fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1"); //解决下载的文件名中含有小括号转变义符%28%29

}else if(null != agent && -1 != agent.indexOf("Firefox")){//Firefox

fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");

}else if(null != agent && -1 != agent.indexOf("Safari")){//Firefox

fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");

}else {//其它浏览器

fileName = new String(fileName.getBytes("gb2312"), "ISO8859-1");

}

} catch (Exception e) {

throw new RuntimeException("transFileName error", e);

}

return fileName;

}

}

java工具类下载_java文件下载工具类相关推荐

  1. java pinyin4j.jar 下载_Java pinyin4j 工具类实现代码分享

    工具类代码:package com.what21.util.pinyin; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourc ...

  2. java url类下载_Java根据url下载图片或文件的工具类-Fun言

    package cn.funyan.utils; import java.io.FileOutputStream; import java.io.IOException; import java.io ...

  3. java 枚举的继承_java中枚举类可以被继承吗?

    java 枚举类 java中,使用关键字enum来定义枚举类,枚举类是一个特殊的类,大部分功能和普通类是一样的,区别为: ● 枚举类继承了java.lang.Enum类,而不是默认的Object类.而 ...

  4. java 类爆炸_Java 封装与类

    一.面向对象编程 面向对象编程三大特性:封装.继承和多态. 类是实现封装的手段,是面向对象编程的基本单元. 封装隐藏了类的内部实现细节,暴露给外界可控的操作,提高数据的完整性和安全性,提高模块的可重用 ...

  5. java 日期格式常量_Java 日期格式类

    Java格式 - Java日期格式类 Java 8有新的Date-Time API来处理日期和时间. 我们应该使用新的Java 8 Date-Time API来格式化和解析日期时间值. 如果我们正在编 ...

  6. java上传下载_Java文件上传与文件下载实现方法详解

    本文实例讲述了Java文件上传与文件下载实现方法.分享给大家供大家参考,具体如下: Java文件上传 数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传.文件上传是数据上传 ...

  7. java random函数用法_JAVA的Random类的用法详解

    Random类主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家. Random类 (java.util) Random类中实现的随机算法是伪随机,也就是有规则的随机.在进行随机时 ...

  8. java web 初始化方法_Java Web(二) 类的初始化及初始化顺序

    1. 问题点 最近在写单例模式的时候碰到了@Autiwired注解注入为NULL的情况,研究一番,发现是和类的初始化顺序有关.先抛出我的问题: //异步处理 public class AsyncMan ...

  9. java接口作为参数_JAVA:将类、抽象类、接口当成方法的参数传入

    将类当成参数传入方法,其实就是将类的对象传入方法,如果是抽象类,其实就是将抽象类的子类的对象传入方法,如果是接口,其实就是将接口实现类的对象传入方法. 因为抽象类和接口是不能实例化成对象的,所以必须找 ...

最新文章

  1. Dropbox如何使用机器学习从数十亿图片中自动提取文字
  2. 一场“正宗”的开发者大会,为什么说微软更像是“AII in AI”了?
  3. java tabpanel_java cs tab点击切换标签的实现 panel
  4. 与MYSQL的零距离接触(数据类型) 慕课网
  5. linux 管道 top,linux IPC总结——管道
  6. Google解密携手宏达电:确保Android一炮打响
  7. 信息学奥赛一本通(1022:整型与布尔型的转换)
  8. AllJoyn+Android开发案例-android跨设备调用方法
  9. Android应用启动画面实现
  10. 三维激光雷达路沿检测
  11. js 判断系统类型和手机型号(厂商)
  12. ASP.NET限制上传文件类型
  13. ih5手机版怎么登录服务器未响应,ih5 与服务器链接教程
  14. 在WIN2012R2和WIN2016服务器打开网站慢的解决方法
  15. iOS app 打包发布
  16. 计算机开机后黑屏鼠标显示桌面图标,电脑开机后黑屏只有一个鼠标箭头怎么办 电脑黑屏的解决方法...
  17. 适配器模式实战场景和本质
  18. 我做了一款iOS12捷径市场,也许是目前最好看也是最具技术含量的ShortCuts小程序
  19. 淘宝API_item_cat_get - 获得淘宝商品类目
  20. Qt QAxObject操作excel文件过程总结

热门文章

  1. 使用SAP Spartacus快速创建一个电商店铺网站
  2. SAP CRM和Cloud for Customer里的Formatted Text控件的比较
  3. Eclipse里Java项目设置Java编辑器版本的位置
  4. 一个初学者的SAP Cloud Platform学习笔记
  5. SAP Fiori elements第二次重复加载的问题
  6. Opportunity retrieval in SalesPipeline
  7. SAP CRM WebClient UI Sales Area的cancel处理
  8. 批量设置Service Order成transferred状态
  9. 如何找到SAP CRM WebClient UI error message的来源
  10. inconsistent debug frame and source code -Eclipse调试器里看到的代码行数和实际源代码不一致该怎么办