导航:首页 > 版本升级 > transmitfile大文件

transmitfile大文件

发布时间:2024-11-03 12:58:50

㈠ .net Response.TransmitFile() 的问题

这个方法加载css没用过,以前用它做过下载,如果想加载css的话可以用@import方法

建个base.css,里面引用其他css就可以了。

㈡ 用c#怎样从服务器下载文件,并保存为相应的类型

C#从服务器下载文件可以使用多种方法。以下是一些常见的技术:
1. 使用`TransmitFile`方法:
这种方法适用于大文件下载,因为它解决了使用`Response.BinaryWrite`下载超过400MB文件时,ASP.NET进程可能会被回收的问题。示例代码如下:
```csharp
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);
}
```
2. 使用`WriteFile`方法:
这种方法适用于简单文件下载。示例代码如下:
```csharp
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();
}
```
3. 分块下载使用`WriteFile`方法:
这种方法适用于大型文件,可以分块读取以减轻服务器的压力。示例代码如下:
```csharp
protected void Button3_Click(object sender, EventArgs e)
{
string fileName = "aaa.txt"; // 客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt"); // 文件路径
FileInfo fileInfo = new FileInfo(filePath);
if (fileInfo.Exists == true)
{
const long ChunkSize = 102400; // 100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte[] buffer = new byte[ChunkSize];
Response.Clear();
FileStream iStream = 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();
}
}
```
4. 使用流方式下载:
这种方法通过流的方式来下载文件,适用于各种大小的文件。示例代码如下:
```csharp
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();
}
```
这些方法可以根据文件的大小和需求进行选择,以确保高效和稳定地从服务器上下载文件。

㈢ c#从服务器读文件的问题

C#从服务器上面读取文件,然后下载到本地可以用WriteFile()或者TransmitFile()方法实现,代码如下:

//1、TransmitFile实现下载
protectedvoidButton1_Click(objectsender,EventArgse)
{
/*
微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite
下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题。
代码如下:
*/
Response.ContentType="application/x-zip-compressed";
Response.AddHeader("Content-Disposition","attachment;filename=z.zip");
stringfilename=Server.MapPath("DownLoad/z.zip");
Response.TransmitFile(filename);
}

//2、WriteFile实现下载
protectedvoidButton2_Click(objectsender,EventArgse)
{
/*
usingSystem.IO;

*/
stringfileName="asd.txt";//客户端保存的文件名
stringfilePath=Server.MapPath("DownLoad/aaa.txt");//路径

FileInfofileInfo=newFileInfo(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();
}

㈣ C#实现下载功能

//TransmitFile实现下载
protected void Button1_Click(object sender, EventArgs e)
{
// 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite
//下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题
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)
{
//using System.IO;
string fileName = "asd.txt";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
FileInfo fileinfo = new FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.AddHeader("Content-Length", "attachment;filename=" + fileName);
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();
}
}

㈤ 求推荐一本 VC++网络编程 的好书

Windows网络与通信程序设计(第2版)王艳平这本书写的非常好,我有本王艳平写的windows程序设计,写得很好,我自己不做网络开发,就没有买网络的那本书!不过推荐你看看,真的很不错!

本书将编程方法、网络协议和应用实例有机结合起来,详细阐明Windows网络编程的各方面内容。本书首先介绍Windows平台上进行网络编程的基础知识,包括网络硬件、术语、协议、Winsock编程接口和各种I/O方法等;然后通过具体实例详细讲述当前流行的高性能可伸缩服务器设计、IP多播和Internet广播、P2P程序设计、原始套接字、SPI、协议驱动的开发和原始以太数据的发送、ARP欺骗技术、LAN和WAN上的扫描和侦测技术、个人防火墙与网络封包截获技术等;最后讲述IP帮助函数和E-mail的开发方法。本书结构紧凑,内容由浅入...

第1章计算机网络基础1

1.1网络的概念和网络的组成1

1.2计算机网络参考模型2

1.2.1协议层次2

1.2.2TCP/IP参考模型2

1.2.3应用层(ApplicationLayer)3

1.2.4传输层(TransportLayer)3

1.2.5网络层(NetworkLayer)3

1.2.6链路层(LinkLayer)4

1.2.7物理层(PhysicalLayer)4

1.3网络程序寻址方式4

1.3.1MAC地址4

1.3.2IP地址5

1.3.3子网寻址6

1.3.4端口号8

1.3.5网络地址转换(NAT)8

1.4网络应用程序设计基础10

1.4.1网络程序体系结构10

1.4.2网络程序通信实体11

1.4.3网络程序开发环境12

第2章Winsock编程接口13

2.1Winsock库13

2.1.1Winsock库的装入和释放13

2.1.2封装CInitSock类14

2.2Winsock的寻址方式和字节顺序14

2.2.1Winsock寻址14

2.2.2字节顺序16

2.2.3获取地址信息17

2.3Winsock编程详解20

2.3.1Winsock编程流程20

2.3.2典型过程图23

2.3.3TCP服务器和客户端程序举例24

2.3.4UDP编程26

2.4网络对时程序实例28

2.4.1时间协议(TimeProtocol)28

2.4.2TCP/IP实现代码29

第3章Windows套接字I/O模型31

3.1套接字模式31

3.1.1阻塞模式31

3.1.2非阻塞模式31

3.2选择(select)模型32

3.2.1select函数32

3.2.2应用举例33

3.3WSAAsyncSelect模型36

3.3.1消息通知和WSAAsyncSelect函数36

3.3.2应用举例37

3.4WSAEventSelect模型40

3.4.1WSAEventSelect函数40

3.4.2应用举例42

3.4.3基于WSAEventSelect模型的服务器设计44

3.5重叠(Overlapped)I/O模型53

3.5.1重叠I/O函数53

3.5.2事件通知方式56

3.5.3基于重叠I/O模型的服务器设计56

第4章IOCP与可伸缩网络程序67

4.1完成端口I/O模型67

4.1.1什么是完成端口(completionport)对象67

4.1.2使用IOCP的方法67

4.1.3示例程序69

4.1.4恰当地关闭IOCP72

4.2Microsoft扩展函数72

4.2.1GetAcceptExSockaddrs函数73

4.2.2TransmitFile函数73

4.2.3TransmitPackets函数74

4.2.4ConnectEx函数75

4.2.5DisconnectEx函数76

4.3可伸缩服务器设计注意事项76

4.3.1内存资源管理76

4.3.2接受连接的方法77

4.3.3恶意客户连接问题77

4.3.4包重新排序问题78

4.4可伸缩服务器系统设计实例78

4.4.1CIOCPServer类的总体结构78

4.4.2数据结构定义和内存池方案82

4.4.3自定义帮助函数85

4.4.4开启服务和停止服务88

4.4.5I/O处理线程93

4.4.6用户接口和测试程序99

第5章互联网广播和IP多播100

5.1套接字选项和I/O控制命令100

5.1.1套接字选项100

5.1.2I/O控制命令102

5.2广播通信103

5.3IP多播(Multicasting)105

5.3.1多播地址105

5.3.2组管理协议(IGMP)105

5.3.3使用IP多播106

5.4基于IP多播的组讨论会实例110

5.4.1定义组讨论会协议110

5.4.2线程通信机制111

5.4.3封装CGroupTalk类111

5.4.4程序界面117

第6章原始套接字121

6.1使用原始套接字121

6.2ICMP编程121

6.2.1ICMP与校验和的计算121

6.2.2Ping程序实例124

6.2.3路由跟踪126

6.3使用IP头包含选项129

6.3.1IP数据报格式129

6.3.2UDP数据报格式131

6.3.3原始UDP封包发送实例133

6.4网络嗅探器开发实例134

6.4.1嗅探器设计原理135

6.4.2网络嗅探器的具体实现136

6.4.3侦听局域网内的密码138

6.5TCP通信开发实例140

6.5.1创建一个原始套接字,并设置IP头选项140

6.5.2构造IP头和TCP头140

6.5.3发送原始套接字数据报142

6.5.4接收数据146

第7章Winsock服务提供者接口(SPI)147

7.1SPI概述147

7.2Winsock协议目录148

7.2.1协议特性149

7.2.2使用WinsockAPI函数枚举协议150

7.2.3使用WinsockSPI函数枚举协议151

7.3分层服务提供者(LSP)153

7.3.1运行原理153

7.3.2安装LSP154

7.3.3移除LSP158

7.3.4编写LSP159

7.3.5LSP实例161

7.4基于SPI的数据报过滤实例165

7.5基于Winsock的网络聊天室开发171

7.5.1服务端171

7.5.2客户端171

7.5.3聊天室程序的设计说明172

7.5.4核心代码分析172

第8章Windows网络驱动接口标准(NDIS)和协议驱动的开发176

8.1核心层网络驱动176

8.1.1Windows2000及其后产品的网络体系结构176

8.1.2NDIS网络驱动程序177

8.1.3网络驱动开发环境178

8.2WDM驱动开发基础181

8.2.1UNICODE字符串181

8.2.2设备对象181

8.2.3驱动程序的基本结构183

8.2.4I/O请求包(I/Orequestpacket,IRP)和I/O堆栈183

8.2.5完整驱动程序示例186

8.2.6扩展派遣接口188

8.2.7应用举例(进程诊测实例)191

8.3开发NDIS网络驱动预备知识198

8.3.1中断请求级别(InterruptRequestLevel,IRQL)198

8.3.2旋转锁(SpinLock)198

8.3.3双链表199

8.3.4封包结构199

8.4NDIS协议驱动200

8.4.1注册协议驱动200

8.4.2打开下层协议驱动的适配器201

8.4.3协议驱动的封包管理202

8.4.4在协议驱动中接收数据203

8.4.5从协议驱动发送封包204

8.5NDIS协议驱动开发实例204

8.5.1总体设计204

8.5.2NDIS协议驱动的初始化、注册和卸载206

8.5.3下层NIC的绑定和解除绑定209

8.5.4发送数据217

8.5.5接收数据219

8.5.6用户IOCTL处理225

第9章网络扫描与检测技术233

9.1网络扫描基础知识233

9.1.1以太网数据帧233

9.1.2ARP234

9.1.3ARP格式236

9.1.4SendARP函数237

9.2原始以太封包的发送238

9.2.1安装协议驱动238

9.2.2协议驱动用户接口238

9.2.3发送以太封包的测试程序244

9.3局域网计算机扫描245

9.3.1管理原始ARP封包246

9.3.2ARP扫描示例249

9.4互联网计算机扫描253

9.4.1端口扫描原理253

9.4.2半开端口扫描实现254

9.5ARP欺骗原理与实现259

9.5.1IP欺骗的用途和实现原理259

9.5.2IP地址冲突260

9.5.3ARP欺骗示例261

第10章点对点(P2P)网络通信技术264

10.1P2P穿越概述264

10.2一般概念265

10.2.1NAT术语265

10.2.2中转265

10.2.3反向连接266

10.3UDP打洞267

10.3.1中心服务器267

10.3.2建立点对点会话267

10.3.3公共NAT后面的节点267

10.3.4不同NAT后面的节点268

10.3.5多级NAT后面的节点269

10.3.6UDP空闲超时270

10.4TCP打洞271

10.4.1套接字和TCP端口重用271

10.4.2打开点对点的TCP流271

10.4.3应用程序看到的行为272

10.4.4同步TCP打开273

10.5Internet点对点通信实例273

10.5.1总体设计273

10.5.2定义P2P通信协议274

10.5.3客户方程序275

10.5.4服务器方程序287

10.5.5测试程序291

第11章核心层网络封包截获技术294

11.1Windows网络数据和封包过滤概述294

11.1.1Windows网络系统体系结构图294

11.1.2用户模式下的网络数据过滤295

11.1.3内核模式下的网络数据过滤296

11.2中间层网络驱动PassThru296

11.2.1PassThruNDIS中间层驱动简介296

11.2.2编译和安装PassThru驱动297

11.3扩展PassThruNDISIM驱动——添加IOCTL接口297

11.3.1扩展之后的PassThru驱动(PassThruEx)概况297

11.3.2添加基本的DeviceIoControl接口298

11.3.3添加绑定枚举功能302

11.3.4添加ADAPT结构的引用计数307

11.3.5适配器句柄的打开/关闭函数308

11.3.6句柄事件通知315

11.3.7查询和设置适配器的OID信息315

11.4扩展PassThruNDISIM驱动——添加过滤规则323

11.4.1需要考虑的事项323

11.4.2过滤相关的数据结构324

11.4.3过滤列表326

11.4.4网络活动状态327

11.4.5IOCTL控制代码328

11.4.6过滤数据331

11.5核心层过滤实例339

第12章Windows网络防火墙开发技术342

12.1防火墙技术概述342

12.2金羽(Phoenix)个人防火墙浅析343

12.2.1金羽(Phoenix)个人防火墙简介343

12.2.2金羽(Phoenix)个人防火墙总体设计344

12.2.3金羽(Phoenix)个人防火墙总体结构345

12.3开发前的准备345

12.3.1常量的定义346

12.3.2访问规则348

12.3.3会话结构348

12.3.4文件结构349

12.3.5UNICODE支持355

12.4应用层DLL模块356

12.4.1DLL工程框架356

12.4.2共享数据和IO控制362

12.4.3访问控制列表ACL(AccessList)364

12.4.4查找应用程序访问权限的过程367

12.4.5类的接口——检查函数370

12.5核心层SYS模块373

12.6主模块工程375

12.6.1I/O控制类375

12.6.2主应用程序类377

12.6.3主对话框中的属性页380

12.6.4主窗口类381

12.7防火墙页面383

12.7.1网络访问监视页面383

12.7.2应用层过滤规则页面387

12.7.3核心层过滤规则页面397

12.7.4系统设置页面403

第13章IP帮助函数406

13.1IP配置信息406

13.1.1获取网络配置信息406

13.1.2管理网络接口408

13.1.3管理IP地址412

13.2获取网络状态信息415

13.2.1获取TCP连接表415

13.2.2获取UDP监听表418

13.2.3获取IP统计数据420

13.3路由管理427

13.3.1获取路由表427

13.3.2管理特定路由431

13.3.3修改默认网关的例子432

13.4ARP表管理433

13.4.1获取ARP表433

13.4.2添加ARP入口434

13.4.3删除ARP入口434

13.4.4打印ARP表的例子434

13.5进程网络活动监视实例438

13.5.1获取通信的进程终端438

13.5.2Netstate源程序代码439

第14章Email协议及其编程444

14.1概述444

14.2电子邮件介绍445

14.2.1电子邮件Internet的地址445

14.2.2Internet邮件系统445

14.2.3电子邮件信头的结构及分析446

14.3SMTP原理448

14.3.1SMTP原理分析448

14.3.2SMTP工作机制449

14.3.3SMTP命令码和工作原理449

14.3.4SMTP通信模型450

14.3.5SMTP的命令和应答451

14.4POP3协议原理452

14.4.1POP3协议简介452

14.4.2POP3工作原理453

14.4.3POP3命令原始码454

14.4.4POP3会话实例459

14.5实例分析与程序设计460

14.5.1总界面设计460

14.5.2SMTP客户端设计461

14.5.3POP3客户端设计473

阅读全文

与transmitfile大文件相关的资料

热点内容
编程双线圈冲突怎么办 浏览:376
涉农贷款数据在哪里查到 浏览:78
华为手机备份文件去哪里删除 浏览:374
安卓选择题代码实现 浏览:627
176远古合击版本 浏览:284
javaweb项目启动很慢 浏览:67
我的电脑左侧怎么显示文件夹路径 浏览:980
怎么在list里面存数据 浏览:443
编程手机模拟器哪个好用 浏览:37
word2016艺术字 浏览:957
苹果机安卓 浏览:367
百度地图js双击事件监听 浏览:953
c程序中怎么移动光标 浏览:955
无法从googleplay下载更多文件 浏览:13
苹果手机qq里面的视频怎么看 浏览:627
机密文件多少件按泄密处理 浏览:745
编译linux 浏览:666
macbookpro2011拆机教程 浏览:675
eclipse代码补全快捷键 浏览:873
电脑编程序的软件有哪些 浏览:80

友情链接