使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java设计模式之创建型:工厂模式详解(简单工厂+工厂方法+抽象工厂)

    Java设计模式之创建型:工厂模式详解(简单工厂+工厂方法+抽象工厂)

    2021年10月5日
    25
  • python+selenium UI自动化不同浏览器之间的切换「建议收藏」

    python+selenium UI自动化不同浏览器之间的切换「建议收藏」python+selenium UI自动化不同浏览器之间的切换

    2022年4月22日
    35
  • 文本分类常用算法比较

    文本分类常用算法比较本文对文本分类中的常用算法进行了小结,比较它们之间的优劣,为算法的选择提供依据。 一、决策树(DecisionTrees)优点: 1、决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义。 2、对于决策树,数据的准备往往是简单或者是不必要的.其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。 3、能够同时处理数据型和常规型属性。其他的

    2022年5月8日
    43
  • SpringBoot自动配置的原理及实现

    SpringBoot自动配置的原理及实现SpringBoot自动配置的实现原理SpringBoot的核心就是自动配置,自动配置又是基于条件判断来配置Bean。关于自动配置的源码在spring-boot-autoconfigure-2.0.3.RELEASE.jar回顾配置属性在通常需要我们在property中配置信息时,通常使用@ConfigurationProperties(pefix=“前缀”)注解的方式从配置文件中获取配置…

    2022年5月5日
    37
  • 灰度共生矩阵的实现条件_灰度共生矩阵14个特征

    灰度共生矩阵的实现条件_灰度共生矩阵14个特征由于纹理是由灰度分布在空间位置上反复出现而形成的,因而在图像空间中相隔某距离的两象素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。

    2025年5月25日
    0
  • YUV介绍

    YUV介绍YUV表示的含义人们常用RGB表示三基色,而且RGB也可以表示出所有颜色。但视觉心理学研究表明,人眼主要是对光的感知,人的视觉系统对光的感知程度用亮度(luminance)和色度(chrominance)两个属性表示,也就是我们常说的YUV。Y就是亮度感知,而色度感知分为两个属性:色相(hue)和色饱和度(saturation)。色相也就是U,是由光波的峰值定义的,描述的是光的颜色;色饱和度V…

    2022年7月16日
    12

发表回复

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

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