struts2下载在IE中可以下载文件,为什么在ie9和谷歌浏览器器不能下载文件

IE浏览器无法下载文件的修复步骤
如果你在上网的时候,浏览器无法进行下载,这想必是一件非常令人苦恼的事情。对于很多宅男来说,要是不能下载,上网还有啥意思呢!你懂得!最近就遇到点击网站的下载链接以后没有任何反应的情况,而在下载链接上点击右键,选择&另存为&以后,下载对话框一闪就消失了,也没有进行下载。
微软为了保护用户上网安全,在IE浏览器中使用&下载管理器&来识别用户从网上下载的文件类型。这本出于用户安全考虑,但这个功能一旦出现故障,就有可能导致用户无法从网上下载所有文件,出现这种问题的原因也是多种多样的,要具体分析才行。
修复Windows无法进行文件下载
要解决和修复无法使用浏览器从网上下载文件的问题,我们大致可以使用如下步骤来尝试解决:
1、确保当前计算机已正确并正常连接到网络
2、使用磁盘清理工具、CCleaner 或浏览器内置的功能清理 IE 临时文件、Cookies 和历史记录等,并在清理完成后重启计算机
3、设置一个新的下载文件存放路径看看是否可行,我之前有遇到下载文件夹权限丢失导致无法下载的情况
4、尝试禁用下载管理器
5、如果能确定下载的文件是安全的,可以尝试禁用防火墙或杀毒软件观察问题是否修复
6、确定浏览器允许进行下载
运行 inetcpl.cpl&&在 Internet 属性中&&选择安全选项卡&&选中 Internet&&点击自定义级别&&将文件下载设置为启用
7、Internet Explorer 在下载文件时会创建一个临时缓存,但在使用 HTTPs
进行文件下载,并且服务器端配置为禁止缓存时,就将造成文件无法正常下载的情况。要解决客服端配置与服务器端配置冲突造成的文件无法下载时,我们可以更改 IE
配置来解决。
在 Internet 属性&&高级选项卡中&&勾选不将加密的页存盘
8、大多数杀毒软件都会在浏览器下载完成后进行杀毒,但这也可能造成下载故障。如果要想禁用下载文件的反病毒扫描,我们可以修改注册表来实现。
执行 regedit 打开注册表,导航到:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Attachments
如果你找不到Attachments子键,可以自己手动新建一个,右击新建一个Attachments项,再在Attachments项下新建一个DWORD
(32-位)值为 ScanWithAntiVirus 并设置其值为 1 即可。
via:winclientstruts2下载功能,为啥有些文件360浏览器不能下载 - Java Web开发当前位置:& &&&struts2下载功能,为啥有些文件360浏览器不能下载struts2下载功能,为啥有些文件360浏览器不能下载&&网友分享于:&&浏览:3次struts2下载功能,为什么有些文件360浏览器不能下载?用struts2开发了一个文件下载功能,IE,FIREFOX都可以,可是360就不能下载。显示错误
&10:20:31&com.opensymphony.xwork2.monsLogger&error
严重:&Can&not&find&a&java.io.InputStream&with&the&name&[fileInputStream]&in&the&invocation&stack.&Check&the&&param&name="inputName"&&tag&specified&for&this&action.
struts2.xml:
&action&name="muxz_action2"&class="updownfiles.DownFilesAction"&&
&&&&&&&&&&&&&result&name="success"&type="stream"&
&&&&&&&&&&&&&&&&&!--&下载文件类型定义&--&
&&&&&&&&&&&&&&&&&param&name="contentType"&${mimeType}&/param&
&&&&&&&&&&&&&&&&&!--&下载文件处理方法&--&
&&&&&&&&&&&&&&&&&param&name="contentDisposition"&
&&&&&&&&&&&&&&&&&&&&filename="${downFileName}"
&&&&&&&&&&&&&&&&&/param&
&&&&&&&&&&&&&&&&&!--&下载文件输出流定义&getFileInputStream()&--&
&&&&&&&&&&&&&&&&&param&name="inputName"&fileInputStream&/param&
&&&&&&&&&&&&&&&&&param&name="bufferSize"&4096&/param&
&&&&&&&&&&&&&/result&
&&&& &/action&
action:(我的文件存放在数据库里)
&&&public&InputStream&getFileInputStream()&throws&Exception&{
return&fileInputS
&&&&public&String&getMimeType()&{
&&&&&&&&return&ServletActionContext.getServletContext().getMimeType(downFileName);
&&&&public&String&getDownFileName()&{
&&&&&&&&String&FileName&=&downFileN
&&&&&&&&try&{
&&&&&&&& //对文件名转码,&不然在下载的时候文件名是乱码.
&&&&&&&&&&if(ServletActionContext.getRequest().getHeader("USER-AGENT").toLowerCase().indexOf("msie")&&&0&?&true&:&false){
&&&&&&&& &&FileName&=&new&String(FileName.getBytes("GBK"),&"ISO-8859-1");&
&&&&&&&&&&}else{
&&&&&&&& &&FileName&=&new&String(FileName.getBytes("UTF-8"),&"ISO-8859-1");&&
&&&&&&&&&&}
&&&&&&&&}&catch&(Unsupported&e)&{
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&return&FileN
&&&&public&void&setDownFileName(String&downFileName)&{
&&&&&&&&this.downFileName&=&downFileN
&&&&public&String&execute()&throws&Exception&{
&&&&&&& conn=new&Dbconn2().conn();
&&&& try&{
sql&=&"select&thefile,fileName,extname&from&mis.chsi_tmp_files&where&id='"
+&id&+&"'";
Statement&stmt&=&conn.createStatement();
ResultSet&rs&=&stmt.executeQuery(sql);
while&(rs.next())&{
Blob&blob=rs.getBlob("thefile");
downFileName=rs.getString("fileName")+"."+rs.getString("extname");
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());
byte[]bytes&=new&byte[(int)blob.length()];
int&len=bytes.
int&offset&=&0;
int&read&=&0;
while&(offset&&&len&&&&(read&=fileInputStream.read(bytes,&offset,len))&&=&0)&{
&&&&&&offset&+=&
fileInputStream=new&ByteArrayInputStream(bytes);
}&catch&(Exception&e)&{
e.printStackTrace();
if(rs!=null){
rs.close();
if(stmt!=null){
stmt.close();
conn.close();
&&&&&&&&return&SUCCESS;
&&&&}------解决方案--------------------contentLength这个参数最好也能设置一下。另外,contentType参数值MimeType你用代码获得的,如果不需要显示,必须要下载的话应该使用:application/octet-stream 共&2&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有用struts2开发了一个文件下载功能,IE,FIREFOX都可以,可是360就不能下载。显示错误
&10:20:31&com.opensymphony.xwork2.monsLogger&error
严重:&Can&not&find&a&java.io.InputStream&with&the&name&[fileInputStream]&in&the&invocation&stack.&Check&the&&param&name=&inputName&&&tag&specified&for&this&action.
struts2.xml:
&action&name=&muxz_action2&&class=&updownfiles.DownFilesAction&&&
&&&&&&&&&&&&&result&name=&success&&type=&stream&&
&&&&&&&&&&&&&&&&&!--&下载文件类型定义&--&
&&&&&&&&&&&&&&&&&param&name=&contentType&&${mimeType}&/param&
&&&&&&&&&&&&&&&&&!--&下载文件处理方法&--&
&&&&&&&&&&&&&&&&&param&name=&contentDisposition&&
&&&&&&&&&&&&&&&&&&&&filename=&${downFileName}&
&&&&&&&&&&&&&&&&&/param&
&&&&&&&&&&&&&&&&&!--&下载文件输出流定义&getFileInputStream()&--&
&&&&&&&&&&&&&&&&&param&name=&inputName&&fileInputStream&/param&
&&&&&&&&&&&&&&&&&param&name=&bufferSize&&4096&/param&
&&&&&&&&&&&&&/result&
&&&& &/action&
action:(我的文件存放在数据库里)
&&&public&InputStream&getFileInputStream()&throws&Exception&{
return&fileInputS
&&&&public&String&getMimeType()&{
&&&&&&&&return&ServletActionContext.getServletContext().getMimeType(downFileName);
&&&&public&String&getDownFileName()&{
&&&&&&&&String&FileName&=&downFileN
&&&&&&&&try&{
&&&&&&&& //对文件名转码,&不然在下载的时候文件名是乱码.
&&&&&&&&&&if(ServletActionContext.getRequest().getHeader(&USER-AGENT&).toLowerCase().indexOf(&msie&)&&&0&?&true&:&false){
&&&&&&&& &&FileName&=&new&String(FileName.getBytes(&GBK&),&&ISO-8859-1&);&
&&&&&&&&&&}else{
&&&&&&&& &&FileName&=&new&String(FileName.getBytes(&UTF-8&),&&ISO-8859-1&);&&
&&&&&&&&&&}
&&&&&&&&}&catch&(UnsupportedEncodingException&e)&{
&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&return&FileN
&&&&public&void&setDownFileName(String&downFileName)&{
&&&&&&&&this.downFileName&=&downFileN
&&&&public&String&execute()&throws&Exception&{
&&&&&&& conn=new&Dbconn2().conn();
&&&& try&{
sql&=&&select&thefile,fileName,extname&from&mis.chsi_tmp_files&where&id='&
+&id&+&&'&;
Statement&stmt&=&conn.createStatement();
ResultSet&rs&=&stmt.executeQuery(sql);
while&(rs.next())&{
Blob&blob=rs.getBlob(&thefile&);
downFileName=rs.getString(&fileName&)+&.&+rs.getString(&extname&);
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());
byte[]bytes&=new&byte[(int)blob.length()];
int&len=bytes.
int&offset&=&0;
int&read&=&0;
while&(offset&&&len&&&&(read&=fileInputStream.read(bytes,&offset,len))&&=&0)&{
&&&&&&offset&+=&
fileInputStream=new&ByteArrayInputStream(bytes);
}&catch&(Exception&e)&{
e.printStackTrace();
if(rs!=null){
rs.close();
if(stmt!=null){
stmt.close();
conn.close();
&&&&&&&&return&SUCCESS;
回复讨论(解决方案)
你还可以试一试,360还屏蔽了ajax的功能。
360改的太多了
可以给用户提示:
检测到您的浏览器为360浏览器,为了xxxx,请使用xxxx
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());
fileInputStream=new&ByteArrayInputStream(bytes);
可能是代码里以上2句引用对象有冲突导致的。
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());&这句你使用一个单独声明的变量试一下。
你还可以试一试,360还屏蔽了ajax的功能。
360改的太多了 ajax可以用呀!
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());
fileInputStream=new&ByteArrayInputStream(bytes);
可能是代码里以上2句引用对象有冲突导致的。
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());&这句你使用一个单独声明的变量试一下。 不是这个问题,而且现在不是所有的都不能下载,只有本地创建的一些东西不能!
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());
fileInputStream=new&ByteArrayInputStream(bytes);
可能是代码里以上2句引用对象有冲突导致的。
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());&这句你使用一个单独声明的变量试一下。 不是这个问题,而且现在不是所有的都不能下载,只有本地创建的一些东西不能!
本地创建是创建在本地机器上
如果是创建在本地机器上一定不支持下载,在服务器上就是其他问题了。
但还是应该提示用户,不要用XXX浏览器为好
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());
fileInputStream=new&ByteArrayInputStream(bytes);
可能是代码里以上2句引用对象有冲突导致的。
fileInputStream=new&BufferedInputStream(blob.getBinaryStream());&这句你使用一个单独声明的变量试一下。 不是这个问题,而且现在不是所有的都不能下载,只有本地创建的一些东西不能!
本地创建是创建在本地机器上
如果是创建在本地机器上一定不支持下载,在服务器上就是其他问题了。 我的意思是比如本地创建的test.txt上传后,然后再下载就出错,如果是从网上下载的txt文件就不可以!(出错单只360浏览器,IE、firefox都没问题)
但还是应该提示用户,不要用XXX浏览器为好 我这是公司内部使用的小程序,好多人都用360我也没办法!
你说本地创建的,我不太理解,你代码运行在服务器上,本地是指服务器吗?
那可能是上传保存的有问题了
你说本地创建的,我不太理解,你代码运行在服务器上,本地是指服务器吗? 不是,我这个不是单纯的下载,还附带上传,上传的是将文件直接存到数据库中。我只本地创建的是在本地创建文件,然后用上传功能存到数据库中,然后再进行下载。同样是txt格式文件,如果是本地创建的就没办法下载,但是从网上下载的txt格式文件就可以。
那可能是上传保存的有问题了
&param&name=&contentDisposition&&
&&&&&&&&&&&&&&&&&&&&filename=&${downFileName}&
&&&&&&&&&&&&&&&&&/param&可是如果我把attachment去掉在浏览器上是可以直接显示的。
但还是应该提示用户,不要用XXX浏览器为好 我这是公司内部使用的小程序,好多人都用360我也没办法!
你比较下自己创建和网上下载的txt文件有什么区别
那可能是上传保存的有问题了
&param&name=&contentDisposition&&
&&&&&&&&&&&&&&&&&&&&filename=&${downFileName}&
&&&&&&&&&&&&&&&&&/param&可是如果我把attachment去掉在浏览器上是可以直接显示的。
设置文件下载&默认是在线显示
但还是应该提示用户,不要用XXX浏览器为好 我这是公司内部使用的小程序,好多人都用360我也没办法!
你比较下自己创建和网上下载的txt文件有什么区别
那可能是上传保存的有问题了
&param&name=&contentDisposition&&
&&&&&&&&&&&&&&&&&&&&filename=&${downFileName}&
&&&&&&&&&&&&&&&&&/param&可是如果我把attachment去掉在浏览器上是可以直接显示的。
设置文件下载&默认是在线显示 文件大小,文件内容太小的就会出错,我晕,只是因为什么呀!
我没用过strtus2的下载,但是http头里面,contentDisposition这个参数,如果手写的话,应该是Content-Disposition,不知道是否有影响
但还是应该提示用户,不要用XXX浏览器为好 我这是公司内部使用的小程序,好多人都用360我也没办法!
你比较下自己创建和网上下载的txt文件有什么区别
那可能是上传保存的有问题了
&param&name=&contentDisposition&&
&&&&&&&&&&&&&&&&&&&&filename=&${downFileName}&
&&&&&&&&&&&&&&&&&/param&可是如果我把attachment去掉在浏览器上是可以直接显示的。
设置文件下载&默认是在线显示 文件大小,文件内容太小的就会出错,我晕,只是因为什么呀!
我没用过strtus2的下载,但是http头里面,contentDisposition这个参数,如果手写的话,应该是Content-Disposition,不知道是否有影响 不是哪里的问题,我在想是否是我输出流的问题。
我看了官方文档,参数应该不是问题,不过你不能下载的文件多大?调整参数:&param&name=&bufferSize&&4096&/param&,调小一点看看。
contentLength这个参数最好也能设置一下。另外,contentType参数值MimeType你用代码获得的,如果不需要显示,必须要下载的话应该使用:application/octet-stream
我看了官方文档,参数应该不是问题,不过你不能下载的文件多大?调整参数:&param&name=&bufferSize&&4096&/param&,调小一点看看。 我试着调小了也不行,大概10k一下的都不能下载!
contentLength这个参数最好也能设置一下。另外,contentType参数值MimeType你用代码获得的,如果不需要显示,必须要下载的话应该使用:application/octet-stream 设置contentLength也还是不行。
你先拿个10k以下的文件实验一下,直接写死文件流,确定以下到底是哪块的问题
你先拿个10k以下的文件实验一下,直接写死文件流,确定以下到底是哪块的问题 谢谢,确实是contentLength的问题,好像360默认10k一下的不能下载,把小于10k的文件的contentLength设置大于10k就可以了!
你先拿个10k以下的文件实验一下,直接写死文件流,确定以下到底是哪块的问题 谢谢,确实是contentLength的问题,好像360默认10k一下的不能下载,把小于10k的文件的contentLength设置大于10k就可以了!
360浏览器,奇哉!
你先拿个10k以下的文件实验一下,直接写死文件流,确定以下到底是哪块的问题 谢谢,确实是contentLength的问题,好像360默认10k一下的不能下载,把小于10k的文件的contentLength设置大于10k就可以了!
360浏览器,奇哉! 是呀,为了这个我都愁了快两天了
官方文档最可靠,如果一般网上搜的有问题,还是看看官方文档比较好,最起码参考的东西多一点。比如你这个问题,官方文档把stream所有可配置参数都列出来了。
360&是流氓啊~~~
官方文档最可靠,如果一般网上搜的有问题,还是看看官方文档比较好,最起码参考的东西多一点。比如你这个问题,官方文档把stream所有可配置参数都列出来了。 嗯,好的,看来以后真的要多看官方文档喽!
你先拿个10k以下的文件实验一下,直接写死文件流,确定以下到底是哪块的问题 谢谢,确实是contentLength的问题,好像360默认10k一下的不能下载,把小于10k的文件的contentLength设置大于10k就可以了!
我试了我本地的一个Struts2项目的上传下载,没发现这个问题,小于10K的文件也试了,可以正常上传下下载。
我用的是最新的6.3版。。。
我觉得不需要用缓存,你把&param&name=&bufferSize&&4096&/param&改为:
&param&name=&maximumSize&&&/param&
貌似我们的没遇到这个问题}

我要回帖

更多关于 ie9和谷歌浏览器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信