使用Response.ContentType 来控制下载文件的类型

使用Response.ContentType 来控制下载文件的类型服务器送给客户端的数据包类型可以是text/html文本,也可以是gif/jpeg图形文件,所以每次传输前,我们都必须告知客户端将要传输的文件类型,一般默认情况下为“Text/Html”类型。1<%Response.ContentType=”text/HTML”%>2<%Response.ContentType=”image/GIF”%>3…

大家好,又见面了,我是你们的朋友全栈君。

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


1
<
% Response.ContentType
=


text/HTML


>


2
 
<
% Response.ContentType
=


image/GIF


>


3
 
<
% Response.ContentType
=


image/JPEG


>


4
 
<
% Response.ContentType
=


text/plain


>


5
 
<
% Response.ContentType
=


image/JPEG


>


6
 
<
% Response.ContentType
=


application/x-cdf


>

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

Response.ContentType = “text/plain”


1
<


2
Response.ContentType
=


text/plain



3
Response.write(
now
()
&

会被执行么?

)

4

>

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

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

Response.ContentType = “application/vnd.ms-excel”


1
<


2
Response.ContentType
=


application/vnd.ms-excel



3
Response.write(

本页面调试会出现下载对话框提供下载,保存类型为XLS

)

4

>

实现歌曲连续播放

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


1


2
 
<


3

dim
ramstr

4
ramstr
=
“”


5

set
rs
=
server.createobject(

adodb.recordset

)

6
sql
=

XXXXXXXXXXX



7
rs.open sql,conn,
1
,
3


conn已定义


8

do

while

not
rs.eof

9
ramstr
=
ramstr
&
rs(

url

)
&
vbCrLf

10
rs.movenext

11

loop


12
rs.close

13
response.ContentType
=

audio/x-pn-realaudio



14


response.ContentType=”audio/x-mpegurl”


15

response.write ramstr

16

>

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

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

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

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

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


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

2
{


3

string
DownloadFileName
=
Server.MapPath(

file.xls

);

4

string
filepath
=
DownloadFileName;

5


6

//
Identify the file name.

7

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

8


9
Response.Clear();

10


11

//
Specify the Type of the downloadable file.

12
Response.ContentType
=


application/octet-stream

;

13


14

//

Set
the Default file name in the FileDownload dialog box.

15
Response.AddHeader(

Content-Disposition

,

attachment; filename=


+
filename);

16


17
Response.Flush();

18


19

//
Download the file.

20
Response.WriteFile(filepath);

21
}

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

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

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


1
System.IO.Stream iStream
=

null
;

2


3

//
Buffer to read 10K bytes in chunk:


4

byte
[] buffer
=

new
Byte[
10000
];

5


6

//
Length of the file:


7

int
length;

8


9

//
Total bytes to read:


10

long
dataToRead;

11


12

//
Identify the file to download including its path.


13

string
filepath
=


DownloadFileName

;

14


15

//
Identify the file name.


16

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

17


18

try


19
{


20

//
Open the file.


21

iStream
=

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

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

23


24


25

//
Total bytes to read:


26

dataToRead
=
iStream.Length;

27


28
Response.ContentType
=


application/octet-stream

;
//
问题就在这里,解决百M关口


29

Response.AddHeader(

Content-Disposition

,

attachment; filename=


+
filename);

30


31

//
Read the bytes.


32

while
(dataToRead
>

0
)

33
{


34

//
Verify that the client is connected.


35

if
(Response.IsClientConnected)

36
{


37

//
Read the data in buffer.


38

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

39


40

//
Write the data to the current output stream.


41

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

42


43

//
Flush the data to the HTML output.


44

Response.Flush();

45


46
buffer
=

new
Byte[
10000
];

47
dataToRead
=
dataToRead

length;

48
}

49

else


50
{


51

//
prevent infinite loop if user disconnects


52

dataToRead
=


1
;

53
}

54
}

55
}

56

catch
(Exception ex)

57
{


58

//
Trap the error, if any.


59

Response.Write(

Error :


+
ex.Message);

60
}

61

finally


62
{


63

if
(iStream
!=

null
)

64
{


65

//
Close the file.


66

iStream.Close();



转载于:https://www.cnblogs.com/meil/archive/2011/01/24/1113802.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161612.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月19日 下午3:16
下一篇 2022年7月19日 下午3:16


相关推荐

  • java 反射 get方法_java反射调用方法

    java 反射 get方法_java反射调用方法I’mworkingwiththebasicsofJavareflectionandobservinginformationonmethodsofclasses.IneedtogetamethodthatmatchesspecificationsasdescribedbythegetMethod()function.However,…

    2026年2月22日
    3
  • 龙虾部署不求人,还附5个OpenClaw必备技能

    龙虾部署不求人,还附5个OpenClaw必备技能

    2026年3月13日
    2
  • WAP网站设计之xhtml mp

    WAP网站设计之xhtml mpWAP 网站设计之 xhtmlmp 作者 99770 动漫网 来源 hi baidu com 大中小 浏览 1971 添加日期 2010 05 11 我要评论 1 nbsp nbsp nbsp 一 XHTMLMP 的语法规则我们知道 我们通常用电脑访问的网站的网页是用 html 构建的 类似的 现在 WAP2 0 网站是用 XHTMLMP 构建 以供手持设备的访问 如手机 PDA 等 XHTMLMP 是 XHT

    2026年3月18日
    2
  • linux认证考试题(三)

    linux认证考试题(三)

    2021年8月1日
    74
  • 502 Bad Gateway 常见解决思路

    502 Bad Gateway 常见解决思路一般在访问某些网站或者我们在做本地测试的时候,服务器突然返回502BadGatewayNginx,这种问题相信大家也遇到不少了,这里我再总结下几种处理方式,有缺少或者错误的希望有大神能指出。一般的思维:502,说明服务器没有响应,也就是我们的web服务器没有接到有效的信息导致的。产生错误的原因主要是:连接超时,我们向服务器发送请求由于服务器当前链接太多,导致服务器方面无…

    2022年6月29日
    35
  • dropdownlist绑定数据源_不能绑定到字段或数据成员

    dropdownlist绑定数据源_不能绑定到字段或数据成员如何使用DropDownList控件绑定数据呢,今天我们来介绍一下比较常用的一种方法——前后台结合方式:首先,我们需要拉一个DropDownList控件:然后,通过控件配置SqlDataSource数据源,选择合适的数据表:接着,设置DataTextField(数据源中提供项文本的字段)和DataValueField(数据源中提供项值的字段)属性:前台显示如下:配置完之后,一定不要忘记删除DataSourceID属性和生成的SqlDataSource控件:

    2022年10月8日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号