Response.Clear()
Response.ClearHeaders()
Response.Buffer = True
Dim file As FileInfo
file = New FileInfo("c:\我.txt") If Not file.Exists() Then Exit Sub Dim bf(file.Length) As Byte
Dim stream As FileStream
stream = file.Open(FileMode.Open)
stream.Read(bf, 0, file.Length)
stream.Close()
Response.ContentType = "application/octet-stream"
Response.Charset = "utf-8"
Response.AppendHeader("content-disposition", "attachment;filename=" & HttpUtility.UrlEncode(file.Name))
Response.BinaryWrite(bf)
Response.Flush()
Response.ClearHeaders()
Response.Buffer = True
Dim file As FileInfo
file = New FileInfo("c:\我.txt") If Not file.Exists() Then Exit Sub Dim bf(file.Length) As Byte
Dim stream As FileStream
stream = file.Open(FileMode.Open)
stream.Read(bf, 0, file.Length)
stream.Close()
Response.ContentType = "application/octet-stream"
Response.Charset = "utf-8"
Response.AppendHeader("content-disposition", "attachment;filename=" & HttpUtility.UrlEncode(file.Name))
Response.BinaryWrite(bf)
Response.Flush()
解决方案 »
- 怎么关闭aspx页面。
- 奇怪的问题:新建了一个aspx,但却没有“查看代码”|CSS对2个控件的效果不一样
- asp.net怎样收邮件
- 遍历页面中的checkbox
- 关于datatable筛选的问题
- |M| 200分 在看魔兽网站生成的HTML 发现了一个jquery.js 这个东西功能实在是太强大了 都不用怎么写JS了 哪位有中文文档啊 给个地址
- 关于gridview中Checkbox的问题
- 页面上按下enter键怎么让光标自动移动到下一个输入框
- 页面回发的问题
- 新生成的水晶报表不能在网页中显示?已经改过转义付
- 超级菜鸟入门:下载了.NETFRAMEWORKR后不会运行~~
- 怎样升级asp.net1.1?
Response.ClearHeaders();
Response.Buffer = True;
FileInfo file=new File("c:\我.txt");
if (file.Exists()==false){return;}
FileStream stream=file.Open(FileMode.Open);
Byte [] by =new Byte[file.Length];
stream.Read(by,0,file.length);
stream.close();
Response.ContentType = "application/octet-stream";
Response.Charset = "utf-8";
Response.AppendHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(file.Name));
Response.BinaryWrite(bf);
Response.Flush();
没有测试,你看一下 ,vb的代码 调试通过
<meta http-equiv="Content-Type" content="text/htm ">
http-equiv表示是Headers的名称,content表示这个Headers的值二. 首先,要输出文件的MIME类型:
Page.Response.AddHeader( "Content-Type", “MIME类型” );三. 其次,要输出下载的文件的打开位置和文件名:
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + FileName );
content-disposition 的 HTTP response header 允许指定文档表示的信息。使用这种 header ,你就可以将文档指定成单独打开(而不是在浏览器中打开),还可以根据用户的操作来显示。如果用户要保存文档,你还可以为该文档建议一个文件名。这个建议名称会出现在 Save As 对话框的“文件名”栏中。
attachment ―― 表示作为附件发送到客户端,客户端将单独打开此文件。
inline ―― 表示将在浏览器中打开这个文件。
filename ―― 表示发送到客户端文件的文件名。四. 准备发送到客户端的文件数据:
不管什么类型的文件都要先转成byte类型的数组,然后将这个byte数组用Response.BinaryWrite方法输出到客户端。1. 读取文件来获得byte数组: string FileName; //生成或获取要发送到客户端的文件名string filePath = Server.MapPath("./") + FileName; //假设文件在当前目录下if(File.Exists(filePath) == false){//服务器上没有这个文件return;}FileStream myFile = File.OpenRead(filePath); //读取文件进入FileStreambyte[] fileCont = new byte[myFile.Length];myFile.Read(fileCont,0,(int)myFile.Length); //将文件流中的内容转成byte数组
2. 在数据库的二进制字段中读取: //从url获取图片的idstring ImageId = Request.QueryString["img"];//构建查询语句string sqlText = "SELECT img_data, img_contenttype FROM Image WHERE img_pk = " + ImageId;SqlConnection connection = new SqlConnection( ConfigurationSettings.AppSettings["DSN"].ToString() );SqlCommand command = new SqlCommand( sqlText, connection);connection.Open();SqlDataReader dr = command.ExecuteReader();if ( dr.Read()){byte[] fileCont = (byte[]) dr["img_data"] }connection.Close();通过上述两种方法获得的文件内容的byte数组就可以用来输出了:
Page.Response.BinaryWrite(fileCont);Page.Response.End();
而是调用Page.Response.Write(string s)结果是不是会不同呢?