`

IE6下文件下载不能直接打开,提示‘找不到....'

 
阅读更多
这是什么原因呢?
请看我的原始代码:
		if(!StringUtils.isEmpty(name)){
			try{
				String disposition = "attachment;filename="
					+ new String(name.getBytes("gb2312"),"iso-8859-1")
				+ "."+suffix;
				response.addHeader("Content-disposition", disposition);
				response.addHeader("Content-Length", String.valueOf(attachFile.length()));
				in = FileUtils.openInputStream(attachFile);
			    ou = response.getOutputStream();
				IOUtils.copy(in,ou);
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				IOUtils.closeQuietly(in);
				IOUtils.closeQuietly(ou);
			}
		}


只要加上
response.setHeader("Connection", "close");

就OK了
分享到:
评论
4 楼 hemin108 2012-09-12  
public void writeFileToResponse(Object fileObj,
HttpServletResponse response, String fileName, String contentType) {
if (fileObj == null || response == null
|| !StringUtils.hasText(fileName)
|| !StringUtils.hasText(contentType)) {
logger.error("writeFileToResponse the params error");
return;
}
try {
InputStream is = null;
if (fileObj instanceof InputStream) {
is = (InputStream) fileObj;
} else if (fileObj instanceof File) {
is = new FileInputStream((File) fileObj);
} else if (fileObj instanceof byte[]) {
is = new ByteArrayInputStream((byte[]) fileObj);
} else {
throw new ControllerException(
"writeFileToResponse not support:"
+ fileObj.getClass().getName());
}
//处理在IE下无法下载txt 文件问题
if(contentType.equals("text/plain")){
contentType ="application/octet-stream";
}
response.reset();
response.setContentType(contentType);
response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("GB2312"), "ISO8859-1"));

BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = new BufferedOutputStream(
response.getOutputStream());
long fileLength = 0;
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
fileLength = fileLength + bytesRead;
bos.write(buff, 0, bytesRead);
}
response.setHeader("Content-Length", String.valueOf(fileLength));
response.setHeader("Connection", "close"); 
response.flushBuffer();
bis.close();
bos.close();

} catch (Exception e) {
if (e.getClass().getSimpleName().equals("ClientAbortException")) {
logger.warn("Client Abort download File:{}", fileName);
} else {
throw new ControllerException(e);
}
}
}
3 楼 hemin108 2012-09-12  
我这样写ok了
public void writeFileToResponse(Object fileObj,
HttpServletResponse response, String fileName, String contentType) {
if (fileObj == null || response == null
|| !StringUtils.hasText(fileName)
|| !StringUtils.hasText(contentType)) {
logger.error("writeFileToResponse the params error");
return;
}
try {
InputStream is = null;
if (fileObj instanceof InputStream) {
is = (InputStream) fileObj;
} else if (fileObj instanceof File) {
is = new FileInputStream((File) fileObj);
} else if (fileObj instanceof byte[]) {
is = new ByteArrayInputStream((byte[]) fileObj);
} else {
throw new ControllerException(
"writeFileToResponse not support:"
+ fileObj.getClass().getName());
}
//处理在IE下无法下载t
从百草园到三味书屋 写道
hemin108 写道
还是不行··

那么兄弟,那你找到其他的解决方法了吗?我又遇到了这个问题,但是解决不了哦。

xt 文件问题
if(contentType.equals("text/plain")){
contentType ="application/octet-stream";
}
response.reset();
response.setContentType(contentType);
response.setHeader("Content-disposition", "attachment; filename="
+ new String(fileName.getBytes("GB2312"), "ISO8859-1"));

BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = new BufferedOutputStream(
response.getOutputStream());
long fileLength = 0;
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
fileLength = fileLength + bytesRead;
bos.write(buff, 0, bytesRead);
}
response.setHeader("Content-Length", String.valueOf(fileLength));
response.setHeader("Connection", "close"); 
response.flushBuffer();
bis.close();
bos.close();

} catch (Exception e) {
if (e.getClass().getSimpleName().equals("ClientAbortException")) {
logger.warn("Client Abort download File:{}", fileName);
} else {
throw new ControllerException(e);
}
}
}
2 楼 从百草园到三味书屋 2012-07-08  
hemin108 写道
还是不行··

那么兄弟,那你找到其他的解决方法了吗?我又遇到了这个问题,但是解决不了哦。
1 楼 hemin108 2012-06-29  
还是不行··

相关推荐

    win7解决IE下载excel时直接在IE浏览器中打开

    标题中的“win7解决IE下载excel时直接在IE浏览器中打开”指的是Windows 7操作系统中,用户在使用Internet Explorer(IE)浏览器下载Excel文件时,系统可能会默认直接在浏览器内打开,而不是保存到本地。这可能导致...

    完整版用IE下载文件.e.rar

    7. 完成后打开或保存:下载完成后,IE会询问用户是否立即打开文件或保存到指定位置。 此外,关于“.rar”文件,这是一种常见的压缩文件格式,由WinRAR软件创建。用户需要安装像WinRAR或WinZip这样的解压工具才能...

    解决WIN7打开组策略提示 找不到资源

    在Windows 7 64位操作系统中,当...在压缩包文件“解决WIN7打开组策略提示找不到资源”中,可能包含了解决此问题的详细步骤或工具,建议解压并按照其中的指南进行操作。如果问题持续存在,可能需要寻求专业的技术支持。

    谷歌浏览器js打开IE浏览器.rar

    如果在非IE浏览器中运行,会捕获到错误并提示用户手动打开IE。需要注意的是,这种方法只适用于Windows系统,并且需要确保用户机器上安装了IE且路径正确。 此外,由于安全性和隐私原因,现代浏览器对这种跨浏览器的...

    ie6、ie7无法显示png图片,pngfilt.dll

    在IE6和IE7中,由于这个组件的限制,不能正确处理PNG24位图像的Alpha通道,从而导致了显示问题。 解决这个问题的方法是替换或升级`pngfilt.dll`文件。在提供的压缩包中,有两个文件:`pngfilt7.dll`和`pngfilt6.dll...

    IE浏览器下载RAR文件的问题

    标题中的问题涉及到的是在Internet Explorer(简称IE)浏览器中下载RAR文件时遇到的一个特定行为:当用户意外取消了“在打开这种类型的文件前始终询问”的选项后,所有RAR文件在下载完成后不再弹出保存对话框,而是...

    在Firefox下直接调用IE浏览器(IETab这个插件).zip

    标题中的"IETab"是一个Firefox浏览器插件,它允许用户在Firefox中直接使用Internet Explorer(IE)的渲染引擎来打开网页。这个插件对于那些必须访问仅支持IE特性的网站的用户来说非常有用,因为某些老旧或特定的Web...

    tiff 插件 解决ie无法查看tif文件

    标题中的“tiff 插件 解决ie无法查看tif文件”指的是针对Internet Explorer(IE)浏览器的一个问题,即IE默认不支持直接预览或打开TIFF文件。当用户尝试在IE中查看TIFF图像时,可能会遇到“无法打开”或“无法下载”...

    网页保存图片并下载到本地 兼容IE浏览器

    可以使用try...catch语句,当捕获到错误时,可以给出提示或重新尝试下载。 最后,确保项目在服务器环境下运行,因为浏览器的同源策略限制了跨域访问。在本地运行时,可以使用工具如http-server或webpack-dev-server...

    ie浏览器不能下载东西提示没有提供下载的内容该怎么办.docx

    标题和描述中提到的问题是关于使用IE浏览器时遇到无法下载文件的情况,特别是当网页提示“没有提供下载的内容”。这个问题可以通过挖掘浏览器的缓存来解决。以下是一些详细步骤和相关知识点: 1. **理解浏览器缓存*...

    ie tab.crx 、ietabhelper.exe ver.14

    2. **多版本支持**:"ver.14" 提示该版本可能支持多个版本的IE,包括IE6到IE11,这样用户可以根据需要选择合适的IE版本进行模拟。 3. **安全性**:虽然使用IE Tab可以方便访问那些需要IE的网站,但因为扩展可能会...

    解决IE8无法打开OA及OA附件问题

    ### 解决IE8无法打开OA及OA附件问题 #### 一、理解IE8浏览器自动屏蔽机制 IE8作为一款较为古老的浏览器,在设计时充分考虑到了安全性的问题。它默认开启了一系列的安全措施来保护用户的电脑免受恶意软件和网络攻击...

    IE浏览器WAP插件 IE直接打开WAP网站

    标题中的“IE浏览器WAP插件 IE直接打开WAP网站”指的是在Internet Explorer(IE)浏览器上使用特定的插件,使得用户可以直接访问WAP(无线应用协议)网站。WAP是专为移动设备设计的一种简化版网页浏览技术,允许手机...

    IE8浏览器下载的文件在哪里.pdf

    7. **找不到下载的文件**:如果在“查看下载”窗口中找不到文件,可以尝试检查上述默认下载路径,或者在系统搜索栏输入文件名进行搜索。 8. **安全提示**:下载的文件尤其是PDF,可能会带有潜在的恶意软件。在打开...

    加快IE下载速度.

    虽然这种方法存在一定的风险,但如果按照上述步骤操作并采取适当的预防措施,大多数用户都能享受到更快的下载体验。这对于经常使用IE浏览器进行大文件下载的用户来说,无疑是一种非常实用的技巧。

    IE下载完成后怎么不弹出提示框?.docx

    在日常浏览中,我们经常会遇到下载文件的需求,而在 IE 浏览器中,下载完成后会弹出一个提示窗口,可以选择打开、打开文件夹和关闭。但是,如果我们不小心勾选了“下载完成后关闭此对话框”复选框,那么下载完后就...

    打开PHP页面为何总是提示下载.pdf

    如果浏览器识别到某个文件类型是应该下载的,那么它就不会直接在浏览器窗口中打开该文件,而是提供一个下载对话框。 对于PHP页面来说,正常情况下,PHP文件是由服务器端的PHP引擎执行并动态生成HTML内容发送给...

    IECLIENT.RAR

    IEClient.EXE可能是一个可执行文件,代表了这个客户端程序,用户可以直接运行来启动服务或功能。在运行任何未知的可执行文件之前,确保其来源可靠,并且有最新的防病毒软件进行扫描,以防止潜在的恶意软件威胁。 ...

    修复IE不能打开新窗口

    在使用“修复IE不能打开新窗口.exe”这个单文件程序时,用户只需运行该文件,按照软件的提示进行操作,通常不需要专业知识,就能自动完成修复过程。不过,为了确保数据安全,建议在进行此类操作前备份重要数据,并在...

    IE6和IE7升级到IE8安装失败的解决方法.doc

    总之,解决IE6和IE7升级到IE8失败的问题,关键在于正确下载安装文件,选择合适的安装路径,以及在必要时利用安全模式进行安装。同时,理解并善用兼容性视图和安全设置,可以确保在升级后顺利访问各种网站。

Global site tag (gtag.js) - Google Analytics