http://www.cnblogs.com/zcttxs/archive/2012/05/21/2511947.html
http://www.cnblogs.com/flashlm/archive/2009/07/25/file_stream_write_method.html
aspxページ:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="上传和下载文件.aspx.cs" Inherits="上传和下载文件" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:FileUpload ID="homeworkFile" runat="server" />
<asp:Button ID="btnAdd" runat="server" Text="上传" OnClick="btnAdd_Click"/></br>
<asp:Button ID="btndownfile" runat="server" Text="下载方法一:TransmitFile"
onclick="btndownfile_Click" /></br>
<asp:Button ID="btndownfilebyWriteFile" runat="server"
Text="下载方法二:WriteFile" onclick="btndownfilebyWriteFile_Click" /></br>
<asp:Button ID="btndownfilebyWriteFile2" runat="server"
Text="下载方法三:WriteFile分块" onclick="btndownfilebyWriteFile2_Click" /><br />
<asp:Button ID="btndownfilebystream" runat="server" Text="下载方法四:流方式下载"
onclick="btndownfilebystream_Click" />
</form>
</body>
</html>
背後のaspxコード:
Web構成ファイル:
<のappSettings>
< -アップロードされたファイルへのパス- !>
<キー= "ResoursePath"値を追加= "D:\ IbeaconShow \ BJNetwork" />
<キー= "RESHomeworkContentPath"値を追加します。= "\ DATA" />
<! -ファイルのサイズをアップロードするには- >
<追加キー= "FileUploadMaxSize"値= "20M" />
<! -タイプをアップロードすることができる- >
<キー= "のFileType"値=「ZIP、.TXTを追加します。 、.DOC、.RAR、* .XLS、.RTF、.xlsxの、.docxの、.PNG「/>
</のappSettings>
<のsystem.web>
<! - -デフォルトのasp.netのアップロードファイルのサイズ変更>
<のhttpRuntime executionTimeout = "300" maxRequestLength = "409600" useFullyQualifiedRedirectUrl = "偽" />を
</system.web>
IISアップロードサイズの変更
1、最初のIISサービスプロセスに行くには、あなたがよ~~~変更するものではありません、ファイル内の他、そのInetinfo.exeプロセスを閉鎖、または
窓/ system32に/ inesrv /メタベース:2、システムディレクトリに見つかりました.xmlの204800「この1「ファイル、彼を見つけるために、テキストエディタを開いて、私はAspMaxRequestEntityAllowed =を見つけるために、EditPuls(この男はフォントの色で、良いですが)、Ctrlキー+ Fを使用していた」、これは、ファイルのアップロード、IISのデフォルトサイズですデフォルトでは、あなたがそれを必要とするサイズに変更し、200キロバイトであること、204800Byteです!
マルチスレッドHTTPダウンロード用のパフォーマンスへの影響、大規模ファイルのサポート、およびサポート:さまざまな方法をダウンロードするASP.NETファイルの比較
ファイルをダウンロードするには、クライアントを達成するためのクライアント・ファイル・ストリームにサーバーを書くことから、さまざまな方法を提供するasp.net。より多くの有用な抗ダウンロードシステムをやってこれが技術。
いくつかの主要な技術があります:WriteFile関数、およびTransmitFileのBinaryWrite
WriteFiletとのBinaryWriteが早く現れ、出力ファイルストリームには、役割を開始しますが、メモリ書き込み後読み取り、そのためクライアントにファイル全体を下ることになっていることができます多くを取るだろうメモリリソースを使用すると、ファイルが大きいダウンロードしたいとき、特に、asp.netは、アプリケーションの安定動作に影響を与えます。
TransmitFileは、強力な、大きなファイルのサポートも良いですよりも安定のBinaryWriteのWriteFileの不足を補うための方法であり、唯一登場し、WriteFile関数のBinaryWrite。しかし、それはまた、欠点を持っていないだろうHTTPのサポート大容量のファイルを1回のダウンロードではない場合は、完了すると、その後、我々は再びすべてやり直す必要があります。
だから、パフォーマンス、大容量ファイルのダウンロードをサポートし、HTTPのサポート、さらにはマルチスレッドのダウンロードには小さな影響は、まだ自分自身を記述する必要があります。実際には、ファイル全体をメモリに読み込まれた後、さらにクライアントの書き込みの後、我々は彼の出力、道を制御することができるためのBinaryWriteとWriteFile関数は、パフォーマンスに影響を与えるだろう理由コンテンツの一部は、メモリ読み取り専用にし、上でこれらを書くために、クライアントに下りますあなたは、詳細をカスタマイズしてダウンロードすることができます。以下は、あなたの参考のために比較的良好なダウンロード機能を提供します。
</要約> 11 /// <PARAM NAME = "のHttpContext"> 現在の要求のHttpContext </ PARAM> 12である/// <PARAM NAME = "filePathに"> パス、ファイル名を含むダウンロードファイルの物理パス、</ PARAM > 13である/// <PARAM NAME =「スピード」> ダウンロード速度:1秒当たりのバイト数、ダウンロード</ param>の 14 /// <戻り値> ダウンロードに失敗したという誤った真のダウンロードの成功に、> </戻り値
15 のパブリック静的BOOLを DownloadFile(のHttpContextのHttpContext、 文字列 filePathに、 ロング スピード) 16 { 17。 httpContext.Response.Clear(); 18 BOOL 右 =
trueに、
19 試みる 20は{ 21は-確認:HTTPMETHOD、要求されたファイルが#region存在するかどうかを 37 [ 38は、ローカル変数の定義は、ローカル変数は#region定義 51である 52れる-を確認:ファイルが大きすぎると、再開、および最後か日付を介して要求した後に変更されている 69 70 試みる 71は{ 72 -------有意な応答ヘッダ、ヘッダ解決要求、相関検証追加109 110 クライアントに-------送信データブロック- ----------------- 120 } 121 キャッチ122 { 123 RET = falseに; 124 } 125 、最終的に126 { 127
br.Close();
128 myFile.Close()。
129 } 130 }
131キャッチ132 { 133 RET = 偽。134 } 135リターン RET。136 }
137
ます。https://my.oschina.net/garyun/blog/602728で再現