導航:首頁 > 版本升級 > 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大文件相關的資料

熱點內容
怎麼把游戲數據備份到另一個手機 瀏覽:361
微信封殺搶紅包神器破解教程 瀏覽:536
帶貨數據什麼時候更新 瀏覽:500
微信通訊錄復制到手機 瀏覽:498
編程貓怎麼連接音響 瀏覽:589
有沒有什麼app在家點餐 瀏覽:501
win10視頻文件看不到縮略圖注冊表 瀏覽:238
請上傳文件和視頻英語 瀏覽:413
win10拷貝文件失敗拒絕訪問 瀏覽:189
什麼叫app推廣報備 瀏覽:414
win10的文件查找在哪裡設置密碼 瀏覽:617
蘋果6plusitunesstore 瀏覽:971
qqiphone6在線手機軟體 瀏覽:407
文件怎麼轉發 瀏覽:94
數控機床編程與操作怎麼啟動 瀏覽:636
linux查找c文件是否存在 瀏覽:150
從事程序員的身體要求 瀏覽:259
txt文件轉成json文件 瀏覽:941
iosapp怎麼讓未讀消息顯示 瀏覽:805
百度智能雲上傳文件軟體 瀏覽:756

友情鏈接