分享
 
 
 

[讨论]Response.ContentType 控制输出文件类型(讨论下载文件问题)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Response.ContentType :控制输出的文件类型

服务器送给客户端的数据包类型可以是text/html文本,也可以是gif/jpeg图形文件,所以每次传输前,我们都必须告知客户端将要传输的文件类型,一般默认情况下为“Text/Html”类型。

<% Response.ContentType = "text/HTML" %>

<% Response.ContentType = "image/GIF" %>

<% Response.ContentType = "image/JPEG" %>

<% Response.ContentType = "text/plain" %>

<% Response.ContentType = "image/JPEG" %>

<% Response.ContentType = "application/x-cdf" %>

用于作为文本内容返回而不是已解释的 HTML 语句

Response.ContentType = "text/plain"

<%

Response.ContentType = "text/plain"

Response.write(now()&"会被执行么?")

%>

你可以注意到:页面提供下载,页面中的ASP内容被解释执行了的

程序文件以XLS文件被提供下载

Response.ContentType = "application/vnd.ms-excel"

<%

Response.ContentType = "application/vnd.ms-excel"

Response.write("本页面调试会出现下载对话框提供下载,保存类型为XLS")

%>

实现歌曲连续播放

response.ContentType="audio/x-pn-realaudio"

<%

dim ramstr

ramstr=""

set rs=server.createobject("adodb.recordset")

sql="XXXXXXXXXXX"

rs.open sql,conn,1,3 'conn已定义

do while not rs.eof

ramstr=ramstr&rs("url")&vbCrLf

rs.movenext

loop

rs.close

response.ContentType="audio/x-pn-realaudio"

'response.ContentType="audio/x-mpegurl"

response.write ramstr

%>

response.write 输出的时候,由于定义了response.ContentType 所以输出歌曲地址的时候会自动调用符合相应格式的软件来播放歌曲,不过前提是播放歌曲的软件必须先安装的。

以上文章转贴自http://www.w269.com/infow269/1145w2691.htm

这里我想讨论一下,这么也东东。

Q:如何利用ContentType 来,在服务器上提供一个.xls后缀的文件点击下载而不是直接在浏览器中打开。(注意:于上程序文件以XLS文件被提供下载有所不同)

Response.ContentType = "application/x-download",让整个程序文件点击下载了。怎么办好呢???

A:解决方案1. 利用Response.WriteFile的文件输出操作

具体在按钮点击事件中添加一下代码

private void btnDownload_Click(object sender, System.EventArgs e)

{

string DownloadFileName=Server.MapPath("file.xls");

string filepath = DownloadFileName;

// Identify the file name.

string filename = System.IO.Path.GetFileName(filepath);

Response.Clear();

// Specify the Type of the downloadable file.

Response.ContentType = "application/octet-stream";

// Set the Default file name in the FileDownload dialog box.

Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

Response.Flush();

// Download the file.

Response.WriteFile(filepath);

}

以上代码也适合用于小于100MB的小文件下载

如果是大于100MB的大文件下载可以用Response.FileStream 。

C#代码如下:(将 DownloadFileName 替换为大于 100 MB 的文件的名称。)

System.IO.Stream iStream = null;

// Buffer to read 10K bytes in chunk:

byte[] buffer = new Byte[10000];

// Length of the file:

int length;

// Total bytes to read:

long dataToRead;

// Identify the file to download including its path.

string filepath = "DownloadFileName";

// Identify the file name.

string filename = System.IO.Path.GetFileName(filepath);

try

{

// Open the file.

iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,

System.IO.FileAccess.Read,System.IO.FileShare.Read);//用文件流来处理

// Total bytes to read:

dataToRead = iStream.Length;

Response.ContentType = "application/octet-stream";//问题就在这里,解决百M关口

Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

// Read the bytes.

while (dataToRead > 0)

{

// Verify that the client is connected.

if (Response.IsClientConnected)

{

// Read the data in buffer.

length = iStream.Read(buffer, 0, 10000);

// Write the data to the current output stream.

Response.OutputStream.Write(buffer, 0, length);

// Flush the data to the HTML output.

Response.Flush();

buffer= new Byte[10000];

dataToRead = dataToRead - length;

}

else

{

//prevent infinite loop if user disconnects

dataToRead = -1;

}

}

}

catch (Exception ex)

{

// Trap the error, if any.

Response.Write("Error : " + ex.Message);

}

finally

{

if (iStream != null)

{

//Close the file.

iStream.Close();

}

}

参考:PRB:Response.WriteFile 无法下载大文件

http://support.microsoft.com/default.aspx?scid=kb;zh-cn;812406#2

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有