Nachdem ich alle Beiträge zum Hochladen großer Dateien in csdn durchgesehen hatte, habe ich diesen Müll geschrieben. (:-))
Es gibt mehrere Möglichkeiten, große Dateien hochzuladen:
1. Die HttpWorkerRequest-Methode von Sigui ist zu schwer zu verstehen:-(
2. Verwenden Sie die Drittanbieter-Steuerung AspNetUpload, um um Geld zu bitten! ! Vergessen Sie es, wir mögen immer noch kostenlos.
3. Ändern Sie die Datei web.config, es können jedoch keine Fehler erkannt werden.
4. Über FTP hochladen. Der Server muss einen FTP-Dienst bereitstellen.
Wir haben keine andere Wahl, als den dritten Weg zu wählen. Wer macht uns so dumm? (Das ist zu dumm. Es spielt keine Rolle. Du solltest mehr Fisch essen. Ich habe gehört, dass der Verzehr von Fisch dich schlauer machen kann.)
Dann studiere die dritte Methode sorgfältig!
Webcong-Datei ändern:
<system.web>
<httpRuntime maxRequestLength="40690"
useFullyQualifiedRedirectUrl="true"
executionTimeout="6000"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100"
enableVersionHeader="true"
/>
</system.web>
Unter diesen sind diejenigen, die in engem Zusammenhang mit dem Hochladen stehen:
maxRequestLength
Gibt die maximale Datei-Upload-Größe an, die von ASP.NET unterstützt wird.
Dieses Limit kann verwendet werden, um Denial-of-Service-Angriffe zu verhindern, die dadurch verursacht werden, dass Benutzer eine große Anzahl von Dateien an den Server weiterleiten.
Die angegebene Größe ist in KB.
Der Standardwert ist 4096 KB (4 MB).
Ausführungszeitüberschreitung
Gibt die maximale Anzahl von Sekunden an, die eine Anforderung ausführen darf, bevor sie automatisch von ASP.NET geschlossen wird.
Die Einheit ist Sekunden. Stellen Sie diesen Wert beim Hochladen großer Dateien ein.
Wenn der Serverspeicher 512 MB beträgt, können Dateien mit einer Größe von 160 MB hochgeladen werden. (Ich habe es nicht ausprobiert. Dies ist die einhellige Meinung vieler Beiträge auf csdn.)
„www.downcodes.com
Zu diesem Zeitpunkt sind die Einstellungen von web.config beendet.
Sobald jedoch die Größe der hochgeladenen Datei den festgelegten Dateigrößenbereich überschreitet, tritt der folgende Fehler auf:
Die Seite kann nicht angezeigt werden. Die Seite, die Sie anzeigen möchten, ist derzeit nicht verfügbar. Möglicherweise sind auf der Website technische Probleme aufgetreten oder Sie müssen Ihre Browsereinstellungen anpassen.
Obwohl es nicht gelöst werden kann, müssen wir diesen Fehler trotzdem abfangen! Was zu tun?
Ich habe kürzlich ein paar Fische gegessen und darüber nachgedacht. Da es sich bei diesem Fehler um einen Vordergrundfehler handelt, der durch die Dateisteuerung verursacht wird, ist es nicht möglich, try...catch zu verwenden, um ihn im Hintergrund abzufangen.
Deshalb habe ich darüber nachgedacht, den Fehlererfassungsseitenmechanismus von .NET zu verwenden, um damit umzugehen. Es ist machbar.
1. Richten Sie zuerst web.config ein
<customErrors mode="On"/>
2. Erstellen Sie eine neue Datei „error.aspx“ speziell zum Erkennen von Fehlern.
3. Fügen Sie die Seitenanweisung zur Startseite der ASPX-Seite hinzu, auf die die Datei hochgeladen wird. ErrorPage="UploadError.aspx"
4. Fügen Sie etwas Code zu error.aspx hinzu, um festzustellen, ob es sich bei der Fehlermeldung um einen durch die Datei verursachten Vordergrundfehler handelt.
öffentliche Klasse UploadError: System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
Ausnahme ex = Server.GetLastError();
if (ex != null)
{
Response.Redirect("../error.aspx");
}
else //Vordergrundfehler ex ist Nullwert
{
Response.Redirect("uploadexcel.aspx?err=1"); //Erneut zur Upload-Seite springen und den err-Parameter hinzufügen, um die Fehlermeldung anzuzeigen
}
}
5. Fehlermeldung anzeigen.
öffentliche Klasse uploadexcel: System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
if (Request["err"] == "1")
{
Page.RegisterStartupScript("budget","<script language = javascript>alert('Upload der Datei ist fehlgeschlagen! Die Dateigröße ist zu groß!')</script>");
}
}
}
6. Erledigen Sie es und machen Sie Schluss. (Dieser Fisch ist nicht kostenlos.)
Nach der oben genannten Änderung wird beim Hochladen nun angegeben, dass das Programm die Dateigröße angibt. Wenn diese überschritten wird, wird eine Fehlermeldung angezeigt.
Auf diese Weise wird es viel besser sein, zumindest kann ich es akzeptieren, und es wird nicht allzu schwer sein, es den Benutzern zu erklären.