Asp.Net--大ファイルのアップロード(ページタイムアウト)
6051 ワード
いくつかの方法:ファイルアップロードサイズの変更 は、サーバ にファイル形式で保存する.バイナリバイトストリームに変換するデータベース に保存する.は、ディスク にバイナリを循環的に書き込む.
一、ファイルのアップロードサイズの制限を変更する
Webを通じて义齿configファイルを修正する.
サイトのルートディレクトリの下のwebに対して.configを変更するには、次の手順に従います.
元:
マシンにMicrosoftNET\Framework\v1.1.4322\CONFIG\machine.configを変更するには、次の手順に従います.
元:
まだできます(テストしたことがなくて、役に立つかどうか分かりません):
「サービス」でiis adminサービスをオフにします.C:WINDOWSsystem 32inetsrvの下のmetabaseを見つけます.xmlファイル.ASPMaxRequestEntityAllowedを見つけて必要な値(20 Mに変更可能:20480000)に変更し、iis adminサービスを再起動します.
前提方法:
四、バイナリを循環的にディスクに書き込む
添付: IISでスクリプトタイムアウト時間を大きくします.操作方法は、IISの「サイトまたは仮想ディレクトリ」の「ホームディレクトリ」の下で「構成」ボタンをクリックし、スクリプトタイムアウト時間を300秒(注意:Sessionタイムアウト時間ではない) に設定します. SERVER 2003で4 Mを超える添付ファイルをダウンロードできない問題を解決「サービス」でiis adminサービスをオフにします.Windowssystem 32inetsrvの下のmetabaseを見つけます.xmlファイル.AspBufferingLimitを見つけて、必要な値(20 M、20480000に変更可能)に変更し、iis adminサービスを再起動します.
一、ファイルのアップロードサイズの制限を変更する
Webを通じて义齿configファイルを修正する.
サイトのルートディレクトリの下のwebに対して.configを変更するには、次の手順に従います.
元:
<httpRuntime executionTimeout="90" maxRequestLength="800000" useFullyQualifiedRedirectUrl="false"/>
executionTimeoutを変更する、タイムアウト時間を変更することができる.maxRequestLengthを修正する、アップロードファイルの上限を変更することができる.マシンにMicrosoftNET\Framework\v1.1.4322\CONFIG\machine.configを変更するには、次の手順に従います.
元:
<httpRuntime
executionTimeout="90"
maxRequestLength="4096"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
enableVersionHeader="true"
/>
executionTimeoutを変更する、タイムアウト時間を変更することができる.maxRequestLengthを修正する、アップロードファイルの上限を変更することができる.まだできます(テストしたことがなくて、役に立つかどうか分かりません):
「サービス」でiis adminサービスをオフにします.C:WINDOWSsystem 32inetsrvの下のmetabaseを見つけます.xmlファイル.ASPMaxRequestEntityAllowedを見つけて必要な値(20 Mに変更可能:20480000)に変更し、iis adminサービスを再起動します.
前提方法:
private string GetFilePath()
{
string Folder = Server.MapPath("temp");
string file = FileUpload1.FileName;
string RealFile = Folder + "\\" + file;
return RealFile;
}
二、ファイル形式でサーバーに保存する protected void Upload_Click(object sender, EventArgs e)
{
string filename = FileUpload1.FileName;
FileUpload1.SaveAs(Server.MapPath("source/") + filename);
}
protected void Button4_Click(object sender, EventArgs e)
{
HttpPostedFile posted = FileUpload1.PostedFile;
string RealFile = GetFilePath();
posted.SaveAs(RealFile);
}
protected void Button1_Click(object sender, EventArgs e)
{
string filepath = GetFilePath();
byte[] b = FileUpload1.FileBytes;
FileStream fs = new FileStream(filepath, FileMode.Create);
fs.Write(b, 0, b.Length);
fs.Close();
}
三、バイナリバイトストリームに変換してデータベースに保存する protected void Button3_Click(object sender, EventArgs e)
{
HttpPostedFile posted = FileUpload1.PostedFile;
byte[] b = new byte[posted.ContentLength];
posted.InputStream.Read(b, 0, b.Length);
/*
*
*/
}
四、バイナリを循環的にディスクに書き込む
protected void Button3_Click(object sender, EventArgs e)
{
string filepath = GetFilePath();
FileStream stream = new FileStream(filepath, FileMode.Create);
int length = 20480;
byte[] b = new byte[length];
try
{
int size = FileUpload1.PostedFile.InputStream.Read(b, 0, length);
while (size > 0)
{
stream.Write(b, 0, size);
size = FileUpload1.PostedFile.InputStream.Read(b, 0, length);
}
}
catch (Exception ex)
{
Response.Write(ex.Message + "<br/>");
Response.Write(ex.InnerException.Message);
}
finally
{
if (stream != null)
{
stream.Flush();
stream.Close();
}
}
}
添付: