﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-计算机学习拾零-随笔分类-dotnet</title><link>http://www.blogjava.net/freebird/category/29499.html</link><description>－－－－我喜欢的学习资料收藏的宝地，学习笔记的记录场地，交流的乐园</description><language>zh-cn</language><lastBuildDate>Mon, 18 Feb 2008 17:32:42 GMT</lastBuildDate><pubDate>Mon, 18 Feb 2008 17:32:42 GMT</pubDate><ttl>60</ttl><item><title>在ASP.NET中下载Text文件，而不是在浏览器中打开它(转)</title><link>http://www.blogjava.net/freebird/archive/2008/02/18/180460.html</link><dc:creator>freebird</dc:creator><author>freebird</author><pubDate>Mon, 18 Feb 2008 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/freebird/archive/2008/02/18/180460.html</guid><wfw:comment>http://www.blogjava.net/freebird/comments/180460.html</wfw:comment><comments>http://www.blogjava.net/freebird/archive/2008/02/18/180460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freebird/comments/commentRss/180460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freebird/services/trackbacks/180460.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Times New Roman" color="#000000" size="3">
						<strong>介绍</strong>
				</font>
		</p>
		<p>
				<font face="Times New Roman" color="#000000" size="3">让用户从我们的网站上下载各种类型的文件是一个比较常用的功能，这篇文章就是告诉您如何创建一个.txt文件并让用户下载。</font>
		</p>
		<p>
				<font face="Times New Roman" color="#000000" size="3">
						<strong>使用代码</strong>
				</font>
		</p>
		<p>
				<font face="Times New Roman" color="#000000" size="3">虽然在示例里，我先创建了一个text文件，但是你不一定也要这么做，因为这个文件可能在你的网站里已经存在了。如果是这样的话，你只需要使用FileStream去读取它就可以了。</font>
		</p>
		<p>
				<font face="Times New Roman" color="#000000" size="3">首先，我们将这个text文件读取到一个byte数组中，然后使用Response对象将文件写到客户端就可以了。</font>
		</p>
		<font face="Times New Roman" color="#000000" size="3">
				<div id="highlighter">
						<span id="codeHigh">Response.AddHeader("<span>Content-disposition</span>", "<span>attachment; filename=</span>" + sGenName);<br />Response.ContentType = "<span>application/octet-stream</span>";<br />Response.BinaryWrite(btFile);<br />Response.End();</span>
				</div>
				<div>
						<br />
						<br />这段代码是完成这个功能的主要代码。第一句在输出中添加了一个Header，告诉浏览器我们发送给它的是一个附件类型的文件。然后我们设置输出的ContentType是"application/octet-stream"，即告诉浏览器要下载这个文件，而不是在浏览器中显示它。<br /><br />下面是一个MIME类型的列表。</div>
		</font>
		<div>
				<font face="Times New Roman" color="#000000" size="3">".asf" = "video/x-ms-asf"<br />".avi" = "video/avi"<br />".doc" = "application/msword"<br />".zip" = "application/zip"<br />".xls" = "application/vnd.ms-excel"<br />".gif" = "image/gif"<br />".jpg"= "image/jpeg"<br />".wav" = "audio/wav"<br />".mp3" = "audio/mpeg3"<br />".mpg" "mpeg" = "video/mpeg"<br />".rtf" = "application/rtf"<br />".htm", "html" = "text/html"<br />".asp" = "text/asp"<br /><br />'所有其它的文件<br />= "application/octet-stream"<br /><br />下面是一个完整的如何下载文本文件的示例代码<br />C#<br /><div id="highlighter"><span id="codeHigh"><span>protected</span><span>void</span> Button1_Click(<span>object</span> sender, EventArgs e)<br />{<br /><span>string</span> sFileName = System.IO.Path.GetRandomFileName();<br /><span>string</span> sGenName = "<span>Friendly.txt</span>";<br /><span>//YOu could omit these lines here as you may not want to save the textfile to the server</span><br /><span>//I have just left them here to demonstrate that you could create the text file </span><br /><span>using</span> (System.IO.StreamWriter SW = <span>new</span> System.IO.StreamWriter(Server.MapPath("<span>TextFiles/</span>" + sFileName + "<span>.txt</span>")))<br />{<br />SW.WriteLine(txtText.Text);<br />SW.Close();<br />}<br /><br />System.IO.FileStream fs = <span>null</span>;<br />fs = System.IO.File.Open(Server.MapPath("<span>TextFiles/</span>" + sFileName + "<span>.txt</span>"), System.IO.FileMode.Open);<br /><span>byte</span>[] btFile = <span>new</span><span>byte</span>[fs.Length];<br />fs.Read(btFile, 0, Convert.ToInt32(fs.Length));<br />fs.Close();<br />Response.AddHeader("<span>Content-disposition</span>", "<span>attachment; filename=</span>" + sGenName);<br />Response.ContentType = "<span>application/octet-stream</span>";<br />Response.BinaryWrite(btFile);<br />Response.End();<br />}<br /></span></div><br /></font>
				<font face="Times New Roman" color="#000000" size="3">VB.NET 
<div id="highlighter"><span id="codeHigh"><span>Dim</span> strFileName <span>As</span><span>String</span> = System.IO.Path.GetRandomFileName()<br /><span>Dim</span> strFriendlyName <span>As</span><span>String</span> = "<span>Friendly.txt</span>"<br /><br /><span>Using</span> sw <span>As</span><span>New</span> System.IO.StreamWriter(Server.MapPath("<span>TextFiles/</span>" + strFileName + "<span>.txt</span>"))<br />sw.WriteLine(txtText.Text)<br />sw.Close()<br /><span>End</span><span>Using</span><br /><br /><span>Dim</span> fs <span>As</span> System.IO.FileStream = <span>Nothing</span><br /><br /><br />fs = System.IO.File.Open(Server.MapPath("<span>TextFiles/</span>" + strFileName + "<span>.txt</span>"), System.IO.FileMode.Open)<br /><span>Dim</span> btFile(fs.Length) <span>As</span><span>Byte</span><br />fs.Read(btFile, 0, fs.Length)<br />fs.Close()<br /><span>With</span> Response<br />.AddHeader("<span>Content-disposition</span>", "<span>attachment;filename=</span>" &amp; strFriendlyName)<br />.ContentType = "<span>application/octet-stream</span>"<br />.BinaryWrite(btFile)<br />.<span>End</span>()<br /><span>End</span><span>With</span><br /></span></div></font>
				<font face="Times New Roman" color="#000000" size="3">
				</font>
				<font face="宋体, MS Song">
				</font>
				<font face="Times New Roman" color="#000000" size="3">
						<strong>小结</strong>
						<br />使用这个方法，你可以实现在Windows系统下下载所有的文件类型。但是在Macintosh系统下会有些问题。</font>
		</div>
<img src ="http://www.blogjava.net/freebird/aggbug/180460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freebird/" target="_blank">freebird</a> 2008-02-18 14:32 <a href="http://www.blogjava.net/freebird/archive/2008/02/18/180460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>