在ASP.NET中,有两个控件可以提供客户下载服务器端的文件:HyperLink控件和LinkButton控件(还没用过),HyperLink控件这个控件只能通过相对路径找到要下载的文件,而且更糟糕的是暴露了文件在服务器中的路径,可能会引出很多麻烦。
这里我们通过设置Http的Header来实现客户端下载的功能。这种方法不用打开一个新的IE窗口,Client端也看不到文件的路径,比较完美的实现了我想要的功能。现贴出代码,大家分享一下
FileStream fileStream
=
new
FileStream(
"
D:\\documents\\test.doc
"
,FileMode.Open);
long
fileSize
=
fileStream.Length;
Context.Response.ContentType
=
"
application/octet-stream
"
;
//
中文文件名需要UTF8编码
Context.Response.AddHeader(
"
Content-Disposition
"
,
"
attachment; filename=\
""
+ HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) +
"
\
""
);
Context.Response.AddHeader(
"
Content-Length
"
,fileSize.ToString());
byte
[] fileBuffer
=
new
byte
[fileSize];
fileStream.Read(fileBuffer,
0
, (
int
)fileSize);
fileStream.Close();
Context.Response.BinaryWrite(fileBuffer);
Context.Response.End();
这里我们通过设置Http的Header来实现客户端下载的功能。这种方法不用打开一个新的IE窗口,Client端也看不到文件的路径,比较完美的实现了我想要的功能。现贴出代码,大家分享一下
![](https://www.cnblogs.com/Emoticons/QQ/13.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)