ie下载 txt文件的解决方法

来源:互联网 发布:自制单片机小说阅读器 编辑:程序博客网 时间:2024/03/29 15:21

上周一直在解决一个日志文件保存的问题。做一点简单的记录,希望对今后遇到同类问题的朋友们有帮助。

 

前提:在我的项目中,是自己移植的http服务器。等有空了,整理一个http服务器工作流程的文档。一直在研究goahead,goahead的分析计划也是因为时间不够搁浅了。可惜啊,真是恨自己时间管理不好。

 

问题:在ie中,点击一个button,能够下载系统的日志文件,必需是txt格式的。

 

分析:最开始接到这个问题的时候,我的第一个反应,太简单了。下载txt对http来说是再简单不过了,什么叫http?超文本传输协议,它就是用来做这个事的。

只需要客户端发一个get ***.txt的http请求,服务器做相应的响应,从flash里读出content,写到socket里,转回给客户端就OK了嘛。

是的,就是这样一个简单的实现,花了我整整三个工作日的时间!

 

过程:首先,做一个简单的demo。

客户端:写一个html。做一个button,加一个onclick事情,重定向到***.txt。

服务端:写一个cgi,处理get ***.txt请求。

一切顺利~

可问题来了:为什么在我的ie上直接把txt的内容显示出来了呢?为什么没有弹出下载的对话框。

马上去百度google一下。发现ie对可以解析的内容,将直接解析出来。

 

怎么办?换个浏览器试试。用google的浏览器。好的很。

该死的ie,不该聪明的时候自作聪明,害死我们这样可怜的程序员了,也不知道为什么90%的客户都用ie呢!哎~

 

没办法,向上面反应:

可不可以不用ie。答曰:你跟客户说去!汗~

可不可以用rar格式。答曰:不可以!

 

几乎崩溃。只好扛下来,继续google。

找到了两种方案,一种是用纯js做的,但是有两个缺陷:

1.只支持ie

2.需要用到弹出窗口

 

boss又提出要求了:不要老用弹出窗口。

 

所以,只好用两二种方案了。改http头

最开始的时候,只把Content-type改了,改成了Content-type: application/octet-stream

还是不行。千辛万苦,终于被我找到了,要加上这样一个http头:

在进行Web开发时,可能遇到遇到以下几种需求:

1.          希望某类或者某已知MIME 类型的文件(比如:*.gif;*.txt;*.htm)能够在访问时弹出文件下载对话框。

2.          希望客户端下载时以指定文件名显示。

3.          希望某文件直接在浏览器上显示而不是弹出文件下载对话框。

 

对于上面的需求,使用Content-Disposition属性就可以解决。

 

Content-Disposition: attachment

 

Content-Disposition:规定了附件的保存方式。

attachment:附件必须以另存为的方式保存。

 

终于解决了这个问题。

 

总结:

1.有时看似简单的问题,其实并不简单

2.多试一次,想想发现Content-Disposition的过程,就是想尽所有办法后的多试一次找到的

3.要有坚定的信念:问题肯定是可以实现的,不要轻言这个实现不了。

 

 

 

 

 

原创粉丝点击