刚刚申请的时候还是非常急切地想知道,什么时候能收到管理员同意自己开通的通知,没想到刚一收到的时候,自己开始纠结第一篇文章写点什么。我想,不如来分享自己的一小段代码吧?
1 var Response = HttpContext.Current.Response; 2 Response.ContentType = "application/octet-stream"; 3 Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName.Substring(0, FileName.Length - 5) + ".doc"); 4 Response.WriteFile(backup_file);//backup_file 是之前定义好的文件名。
其实这个很简单,但是我研究了很久,自己思考的也挺乱的。
我先想到改HttpContext.Current.Response(以下简称Response)的ContentType属性为"application/msword",然后使用Response的WriteFile()方法来把文件写入Http响应当中。结果失败了,操作完成后(首页一个按钮提交文件给此Handler.ashx,经过处理后形成一个word文档)浏览器下载了Handler.ashx文件,打开是乱码,从大小估计,应该这就是我所要的文件了,只不过文件名和拓展名都不是我想要的而已。
于是我在百度上找到了一篇文章,提到这个使用Response告知浏览器下载文件时,Response的ContentType应该是:"application/octet-stream",同样使用了Response.WriteFile()方法后,得到的就是我想要的文件了。
同时值得一提的是,上面我是用的backup_file变量,它的值实际上是文件在我的主机上的物理路径,把这个路径给了该方法,才成功实现了需求。
在tool.oschina.net/commons的HTTP ContentType查询中,我得到的结果是:
.*( 二进制流,不知道下载文件类型) | application/octet-stream |
我所输出的其实是这样一个二进制流。
时间: 2024-10-14 03:23:25