`

java实现文件的下载并解决文件名乱码问题

    博客分类:
  • java
 
阅读更多
[size=medium]
response.setContentType("application/octet-stream"); 
		    String docBasePath = request.getSession().getServletContext().getRealPath("/").replace("/", File.separator).replace("\\", File.separator);
		    docBasePath = docBasePath.substring(0,docBasePath.length()-1);
		    String url = (String)request.getAttribute("url");
		    String docPath = (url).replace("/", File.separator).replace("\\", File.separator);
		    String fileRealName = docPath.substring(docPath.lastIndexOf(File.separator)+1);
		    String filePath = docBasePath+docPath;
		    File file = new File(filePath);
		    List<LawCaseDoc> caseDoc = this.getDocDao().find("from LawCaseDoc caseDoc where caseDoc.url like'%"+fileRealName+"%'");
		    String fileName = "";
		    if(caseDoc.size()==0){
		      	fileName = this.getFileDao().find("from SysFile sysFile where sysFile.fileUrl ='%"+fileRealName+"%'").get(0).getFileName();
		    }else{
		    	fileName = caseDoc.get(0).getName();
		    }
		    response.setContentLength((int)file.length()); 
		    if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){
		        fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");//firefox浏览器
		       }else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
		        fileName = URLEncoder.encode(fileName,"UTF-8");//IE浏览器
		       }
		    	response.reset();//如果有换行,对于文本文件没有什么问题,但是对于其它格
		    response.setHeader("Content-Disposition","attachment;filename="+fileName);
		    OutputStream out = response.getOutputStream();
		    FileInputStream fis = new FileInputStream(file);
		    byte[]b = new byte[1024];
		    int len = 0;
		    while((len = fis.read(b))>0){
		    	out.write(b, 0, len);
		    	
		    }
		    fis.close();
		    out.flush();
		    out.close();
	        //创建file对象 
[/size]
分享到:
评论

相关推荐

    Java实现文件下载并解决中文文件名乱码

    ### Java实现文件下载并解决中文文件名乱码 在日常的Web开发中,经常会遇到需要让用户下载文件的需求,尤其是在企业级应用中。然而,在实际操作过程中可能会遇到一个常见问题:当文件名包含中文字符时,下载后的...

    jsp实现文件下载与中文文件名乱码问题解决

    本文将深入解析如何在JSP中实现文件下载,并解决中文文件名乱码的问题。 首先,我们需要了解HTTP协议在处理文件下载时的角色。当用户请求下载一个文件时,服务器需要设置响应头来指示浏览器如何处理这个响应。在JSP...

    详解关于java文件下载文件名乱码问题解决方案

    Java文件下载文件名乱码问题解决方案 Java 文件下载文件名乱码问题是指在下载 Java 文件时,文件名出现乱码现象,影响下载文件的正确性。这种问题通常有两种情况:一是下载时中文文件名乱码,二是下载时因为路径中...

    Java中压缩与解压--中文文件名乱码解决办法

    ### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时...通过上述步骤,可以有效地解决Java中压缩与解压时中文文件名乱码的问题,使得程序更加健壮和实用。

    welogic struts2文件下载中文件名乱码:在tomcat中是好的哦

    解决WeLogic服务器中Struts2文件下载时的文件名乱码问题,需要综合考虑编码转换、Struts2配置以及Java代码实现等多方面因素。通过上述方法,可以有效避免文件名乱码,确保文件下载功能在WeLogic服务器环境下稳定运行...

    服务器下载word乱码解决方案(文件名乱码、内容乱码)

    往往开发环境和生产环境在环境部署时会遇到很多奇怪的问题,此次word文档下载就被卡住了,通过一番努力终于找到了原因,分享给大家。上传文件txt格式,内有方法详细的代码注释及原因说明,jar包比较常见,大家自行...

    java下载时文件名乱码

    在Java编程中,遇到“java下载时文件名乱码”的问题通常是由于编码不一致或处理不当造成的。在处理文件下载时,尤其是从Web服务器下载带有非ASCII字符的文件名时,这种问题尤为常见。让我们深入探讨这个问题,并提供...

    解决JMeter上传包含中文文件名乱码ApacheJMeter_http.jar

    总之,解决JMeter上传中文文件名乱码问题需要对JMeter的源代码有深入的理解,并能针对性地进行修改。通过确保正确处理文件名的编码,我们可以避免在测试过程中遇到的乱码困扰,从而提高测试的准确性和效率。

    Java Web文件下载,解决了使用IE11下载文件时所出现的乱码问题

    本项目针对的一个重要问题就是如何在使用IE11浏览器时避免出现文件名乱码的情况。 首先,我们要理解这个问题的根源。IE11在处理非ASCII字符的文件名时,可能会由于编码不一致导致乱码。这是因为不同的系统和浏览器...

    jsch-0.1.53 使用sftp协议上传下载文件名中文乱码解决办法

    jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。

    Java应用下载文件功能,输出文件名中的中文乱码

    在Java应用中实现文件下载功能时,经常遇到的一个问题是输出文件名中的中文字符会出现乱码。这主要是因为HTTP协议在传输文件名时,默认使用的是ISO-8859-1编码,而中文字符在此编码下无法正确解析,从而导致乱码的...

    文件下载response.setHeader()下载中文文件名乱码问题解决办法.pdf

    总结来说,通过设置正确的Content-Disposition响应头,并将文件名进行UTF-8编码,可以有效解决Web应用中文件下载时的中文文件名乱码问题。同时,根据文件类型设置正确的Content-Type响应头,以及考虑浏览器的兼容性...

    多文件上传例子(解决中文乱码)

    多文件上传例子,彻底解决中文乱码问题了。总结中文乱码问题如下: 1、所有页面都用UTF-8。 2、写过滤器,设置request.setCharacterEncoding("UTF-8")。 3、javascript脚本里用encodeURI(str)。 4、适当的时候,在...

    【文件下载】及解决文件名中文乱码问题

    总的来说,解决中文文件名乱码问题需要从多个角度考虑,包括服务器配置、HTTP头部设置、编码转换以及选择合适的工具。了解并掌握这些知识点,有助于我们在实际工作中更顺畅地处理各种语言环境下的文件下载问题。对于...

    java导出文件文件名处理

    本文将详细介绍如何在Java中处理导出文件时的文件名问题,确保用户能够正常下载带有中文或其他特殊字符的文件名。 #### 知识点一:理解文件名编码问题 在Web应用中,当服务器向客户端发送文件时,HTTP协议中会包含...

    java压缩zip文件解决中文乱码问题

    在Java中,`java.util.zip`包提供了对ZIP文件的基本操作,但默认使用的是平台默认的字符集,这可能在跨平台操作时引发乱码问题。 为了解决这个中文乱码问题,我们需要在创建ZipEntry时指定合适的字符集,通常是UTF-...

    Java下载文件时文件名乱码问题解决办法

    在Java编程中,当涉及到文件下载时,可能会遇到文件名乱码的问题,尤其是在不同浏览器环境下。这通常是由于浏览器对文件名编码方式的理解不一致导致的。以下是对标题和描述中所述知识点的详细解释: 首先,我们需要...

    linux下的文件名乱码,转为正常

    解决Linux下文件名乱码的问题,关键在于理解和设置正确的locale,以及正确使用各种命令处理文件名。通过上述方法,你应该能够有效地处理和避免文件名乱码问题,确保文件管理的顺利进行。记得在操作过程中要谨慎,...

    Java中FTPClient上传中文目录、中文文件名乱码问题解决方法

    在Java编程中,使用FTPClient进行文件传输时,可能会遇到一个常见的问题,即当尝试创建中文目录或上传具有中文名称的文件时,这些目录名和文件名会显示为乱码,通常表现为“??”这样的形式。这个问题主要是由于FTP...

    不同浏览器上中文文件名的下载乱码问题

    不同浏览器上中文文件名的下载乱码问题 浏览器IEChromeSafariOpera 浏览器能正确识别的编码格式

Global site tag (gtag.js) - Google Analytics