博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 文件下载四方法
阅读量:5281 次
发布时间:2019-06-14

本文共 3059 字,大约阅读时间需要 10 分钟。

C# code
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.IO;
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e) { }
//
TransmitFile实现下载
protected
void
Button1_Click(
object
sender, EventArgs e)
{
Response.ContentType
=
"
application/x-zip-compressed
"
;
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment;filename=z.zip
"
);
string
filename
=
Server.MapPath(
"
DownLoad/z.zip
"
); Response.TransmitFile(filename);
}
//
WriteFile实现下载
protected
void
Button2_Click(
object
sender, EventArgs e)
{
string
fileName
=
"
asd.txt
"
;
//
客户端保存的文件名
string
filePath
=
Server.MapPath(
"
DownLoad/aaa.txt
"
);
//
路径
FileInfo fileInfo
=
new
FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment;filename=
"
+
fileName);
Response.AddHeader(
"
Content-Length
"
, fileInfo.Length.ToString());
Response.AddHeader(
"
Content-Transfer-Encoding
"
,
"
binary
"
);
Response.ContentType
=
"
application/octet-stream
"
;
Response.ContentEncoding
=
System.Text.Encoding.GetEncoding(
"
gb2312
"
);
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();
}
//
WriteFile分块下载
protected
void
Button3_Click(
object
sender, EventArgs e)
{
string
fileName
=
"
aaa.txt
"
;
//
客户端保存的文件名
string
filePath
=
Server.MapPath(
"
DownLoad/aaa.txt
"
);
//
路径
System.IO.FileInfo fileInfo
=
new
System.IO.FileInfo(filePath);
if
(fileInfo.Exists
==
true
)
{
const
long
ChunkSize
=
102400
;
//
100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte
[] buffer
=
new
byte
[ChunkSize];
Response.Clear();
System.IO.FileStream iStream
=
System.IO.File.OpenRead(filePath);
long
dataLengthToRead
=
iStream.Length;
//
获取下载的文件总大小
Response.ContentType
=
"
application/octet-stream
"
;
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
+
HttpUtility.UrlEncode(fileName));
while
(dataLengthToRead
>
0
&&
Response.IsClientConnected)
{
int
lengthRead
=
iStream.Read(buffer,
0
, Convert.ToInt32(ChunkSize));
//
读取的大小
Response.OutputStream.Write(buffer,
0
, lengthRead); Response.Flush(); dataLengthToRead
=
dataLengthToRead
-
lengthRead;
}
Response.Close();
}
}
//
流方式下载
protected
void
Button4_Click(
object
sender, EventArgs e)
{
string
fileName
=
"
aaa.txt
"
;
//
客户端保存的文件名
string
filePath
=
Server.MapPath(
"
DownLoad/aaa.txt
"
);
//
路径
//
以字符流的形式下载文件
FileStream fs
=
new
FileStream(filePath, FileMode.Open);
byte
[] bytes
=
new
byte
[(
int
)fs.Length]; fs.Read(bytes,
0
, bytes.Length);
fs.Close(); Response.ContentType
=
"
application/octet-stream
"
;
//
通知浏览器下载文件而不是打开
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
+
HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); Response.BinaryWrite(bytes); Response.Flush(); Response.End();
}
}

转载于:https://www.cnblogs.com/sunshch/archive/2012/08/30/2663965.html

你可能感兴趣的文章
[POJ 2886] Who Gets the Most Candies?
查看>>
[洛谷p2801]教主的魔法
查看>>
使用文档对象在页面上创建学生信息表。 信息表包括学号、姓名、性别、电子邮件、联系电话、个人主页和联系地址, 信息表内容通过表单输入,提交前先使用正则表达式进行验证,联系地址不能超过...
查看>>
欢迎使用川利科技服务下载中心白皮书2019-5-14
查看>>
2017-2018-2 20179215《网络攻防实践》第三周作业
查看>>
jacascript 滚动 scroll 与回到顶部
查看>>
linux下各文件夹的结构及其用途说明
查看>>
【JZOJ4895】【NOIP2016提高A组集训第16场11.15】三部曲
查看>>
pandas归一化操作
查看>>
EOJ 1114 素数环
查看>>
pyautogui_pdf内容提取到excel内_3
查看>>
C#实现定时器
查看>>
建表语句范例
查看>>
新概念系列之《Part1 Lesson 143 A walk through the woods》
查看>>
【Java每日一题】20170307
查看>>
[Swift]LeetCode456. 132模式 | 132 Pattern
查看>>
python中的数据类型
查看>>
数据帮诞生记
查看>>
移动web开发(一)——移动web开发必备知识
查看>>
Android开发(三十)——ScrollView中ListView的高度自动适应
查看>>