`

文件下载,可解决下载时各种异常及乱码,空格变+号(2)

 
阅读更多
			fis = new BufferedInputStream(new FileInputStream(path));
			byte[] buffer = new byte[fis.available()];
			//byte[] buffer = new byte[1024];
			fis.read(buffer);
			fis.close();
			
			response.reset();
			System.out.println("downloadName---->" + fileName);
			fileName = encodeFileName(request,fileName);
			//解决下载时,空格变加号
			fileName = StringUtils.replace(fileName, "+", "%20"); 
			response
					.addHeader("Content-Disposition", "attachment;filename="
							+ fileName);
			response.addHeader("Content-Length", "" + file.length()); // 设置返回的文件类型
			toClient = new BufferedOutputStream(response
					.getOutputStream()); // 得到向客户端输出二进制数据的对象
			toClient.write(buffer); // 输出数据
			toClient.flush();
			toClient.close();
			return fileName;
		} catch (IOException e) {
			System.out.println("----------下载文件时,输出流发生异常--------------");
			try {
				if(null != fis)
				{
					fis.close();
				}
				if(null != toClient)
				{
					toClient.close();
				}
				
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			
			return fileName;
		}catch(Exception e){
			System.out.println("----------下载文件时发生异常--------------");
			return null;
		}
	}
	
	
	public static String encodeFileName(HttpServletRequest request,
			String fileName) throws UnsupportedEncodingException {
		String agent = request.getHeader("USER-AGENT");
		if (null != agent && -1 != agent.indexOf("MSIE")) {
			System.out.println("------IE浏览器下载");
			return URLEncoder.encode(fileName, "UTF8");
		} /*else if (null != agent && -1 != agent.indexOf("Mozilla")) {
			System.out.println("------火狐浏览器下载");
			return "=?UTF-8?B?"
					+ (new String(Base64.encodeBase64(fileName
							.getBytes("UTF-8")))) + "?=";
		}*/ else {
			System.out.println("------其它浏览器下载");
			//return fileName;
			return new String(fileName.getBytes(),"iso-8859-1");
		}

	}
分享到:
评论

相关推荐

    彻底解决Asp.net 文件下载时文件名的中文乱码和空格异常全球性技术难题

    彻底解决Asp.net 文件下载时文件名的中文乱码和空格异常全球性技术难题 本文用 C# 代码解决了在目前四种流行浏览器中Asp.net 输出文件流时文件名的空格及中文字符乱码这两个问题。使用本文的代码,你将可以让 IE...

    解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题

    当在PyCharm中打开包含中文字符的YAML文件时,可能会遇到层级结构显示异常的问题,具体表现为中文字符无法正确显示或者显示为乱码。这会影响到代码的可读性和维护性。 #### 解决办法 1. **调整PyCharm中的字体设置*...

    文本整理器V3.0 从网上拉下来的源代码,都有这样或那样的问题,用它可以完全解决这些问题了。

    文本整理器V3.0是一款专门针对文本处理的软件,主要功能是清除文本中的全角空格和半角空格,以优化文本内容并解决从网络下载的源代码可能存在的格式问题。在IT行业中,源代码的整洁和规范性至关重要,因为这直接影响...

    java导出文件文件名处理

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

    C#获取去除文件bom头后的内容

    但是一些较旧或者设计不完善的程序可能无法处理这个额外的字节序列,从而导致显示异常,如出现乱码、空格或者无法正确解析文件内容。 在C#中,我们可以通过以下步骤来读取并去除UTF-8文件的BOM头: 1. 使用`File....

    ini文件解析

    - 编程时需考虑文件编码问题,确保读写过程不发生乱码。 - 键和值通常都是字符串,但也可以转换为其他类型,如整数、浮点数等。 - 考虑到ini文件的简单性,一般不进行复杂的语法检查,但要防止因格式错误导致的...

    matlab中将txt文件转换为mat格式

    在MATLAB中,将文本文件(.txt)转换为MAT文件(.mat)是一个常见的操作,这主要适用于处理数据或存储变量。MAT文件是MATLAB的专用格式,用于存储矩阵和数组数据,以及变量和函数定义。下面我们将详细介绍如何进行这...

    java web项目实现文件下载实例代码

    在Java Web开发中,文件下载是一个常见的功能,通常涉及到服务器端向客户端传输静态或动态生成的文件。本实例主要讲解如何通过Java Web技术实现在服务器端获取日志文件并提供给用户下载。首先,我们来看一下关键的...

    Spring MVC的文件下载实例详解

    需要注意的是,文件读取操作中可能会抛出`IOException`异常,因此需要在`catch`块中处理可能出现的异常,以确保程序的健壮性。 下载文件响应部分是实现文件下载的关键。在Spring MVC中,通常返回的是一个`Response...

    Linux中将txt导入到mysql的方法教程

    在Linux环境中,将TXT文件导入MySQL数据库是一种常见的数据迁移任务,尤其在处理大量文本数据时。这个过程可以通过编程语言如Python实现,就像示例代码所示。以下是对整个过程的详细解释: 1. **连接MySQL数据库**...

    批量读取txt文件导入数据库Demo实例

    在IT行业中,批量读取文本文件(如TXT文件)并将其数据导入到数据库是一项常见的任务,特别是在处理大量数据时。这个“批量读取txt文件导入数据库Demo实例”可能是一个示例程序,展示了如何高效地完成这项工作。下面...

    易语言程序免安装版下载

     静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和...

    ReadandDisplayTXT

    在读取文件时,必须指定正确的编码,否则可能会出现乱码。Python的`open()`函数允许指定`encoding`参数来解决这个问题。 7. **批量处理**:在处理多个TXT文件时,可以编写一个循环,遍历文件夹中的所有TXT文件,并...

    php去除BOM头

    2. **提高代码兼容性**:确保文件能被各种编辑器、IDE以及不同系统正确读取和处理。 3. **保持文件整洁**:BOM头对文件内容无实际作用,去除可使文件更简洁,更符合编码规范。 **三、如何去除PHP文件的BOM头** 1. *...

    FileNameUtil文件名工具类

    - 在处理文件名时,可能会遇到权限问题、文件不存在、磁盘空间不足等各种异常。FileNameUtil 应该包含恰当的异常处理机制,以保证程序的健壮性。 8. **多平台兼容性** - 文件系统在不同操作系统(如Windows、...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    注:本系列图书的第I、II卷再版时均相应改名为《xxx开发实例大全》(基础卷)及(提高卷),但内容基本无变化,需要的童鞋可自由匹配查找。 内容简介  《Java开发实战1200例》分为I、II两卷共计1200个例子,包括了开发...

    软件测试功能测试

    17. **上传下载文件检查**:测试文件上传和下载功能,确认上传的文件可正常打开,检查文件格式限制,并验证系统对上传失败或格式错误的提示。 18. **必填项检查**:确保未填写必填项时,系统能给出明确提示,通常会...

    python实现文件批量编码转换及注意事项

    Python 实现文件批量编码转换是解决跨平台或处理不同编码格式文件时常见需求的一个方法。在上述示例中,作者面临的问题是文件源码使用了 Shift_JIS 编码,而 Ubuntu 18.04 系统默认采用 UTF-8 编码,导致文件中的...

    java解压支持中文

    7. **测试**:在开发过程中,务必进行充分的测试,包括使用不同编码的ZIP文件,以及含有特殊字符(如空格、特殊符号)和长文件名的场景,确保在各种情况下都能正确处理中文文件名。 总之,处理Java中解压包含中文...

Global site tag (gtag.js) - Google Analytics