


Wie löste ich das Problem, dass das Hochladen mit großem Datei -Slice keine Dateien über 48 MB verarbeiten kann?
Brechen Sie die 48 -MB -Grenze durch: Lösen Sie das Problem des Hochladens großer Dateischeiben
Besichtigen Sie während des Hochladens großer Dateischeiben auf eine Situation, in der mehr als 48 MB -Dateien nicht verarbeitet werden können? In diesem Artikel wird die Hauptursache des Problems analysiert und Lösungen in Front-End-, Back-End- und Server-Konfiguration bereitgestellt.
Problemanalyse
Beim Hochladen einer großen Datei gibt die nachfolgende Anforderung nach dem 48. Slice (ca. 48 MB) 500 Fehler zurück. Selbst wenn die Scheibengröße eingestellt ist, kann die 40 -MB -Grenze nicht überschritten werden. Dies zeigt an, dass das Problem möglicherweise in der serverseitigen oder Back-End-Verarbeitungslogik liegt und eine detaillierte Fehlerbehebung erfordert.
Front-End-Codeoptimierung
Überprüfen Sie zunächst den Front-End-Code. Der vorherige Code kann jedes Mal das gleiche FormularData -Objekt verwenden, wenn das Slice gesendet wird, wodurch die Datenakkumulation die Serverlimit überschreitet.
Lösung: Jedes Mal, wenn die Upload -Funktion aufgerufen wird, werden das Formdata -Objekt neu erstellen . Auf diese Weise enthält jede Anfrage nur die aktuellen Slice -Daten, wodurch die Ansammlung von Daten vermieden wird.
Beispielcode -Snippet (Verbesserte sendfile
-Funktion):
Funktion sendFile (Blob, Datei) { if (is_stop == 0) { var xhr = new xmlhttprequest (); var form_data = new FormData (); // das FormularData -Objekt var total_blob_num = math.ceil (Datei.Size / Länge) neu erstellen; Form_Data.Append ('Datei', Blob); Form_Data.Append ('Blob_num', Blob_num); Form_Data.Append ('Total_blob_num', Total_blob_num); form_data.append ('file_name', file.name); xhr.open ('post', '/Upload.php', false); xhr.onreadyStatechange = function () { // ... (der Rest des Code bleibt gleich) ... }; xhr.send (form_data); // Anfrage senden} }
Backend -Code -Verbesserungen
Der Backend -Code kann einen Speicherüberlauf verursachen, da große Dateien direkt im Speicher verarbeitet werden. Es wird empfohlen , Streaming- oder Temporary -Dateiverführung zu verwenden. Speichern Sie jede Scheibe in einer temporären Datei und fusionieren Sie sie in die endgültige Datei.
Beispielcode -Snippet (PHP, verbesserte fileMerge
-Funktion):
private function fileMerge () { if ($ this-> blobnum == $ this-> Totalblobnum) { $ out = fopen ($ this-> filepath. '/'. $ this-> Dateiname, 'wb'); // Verwenden Sie den WB-Modus, um die binäre Sicherheit für ($ i = 1; $ i TotalBlobnum; $ i) { $ chunk = fopen ($ this-> filepath. '/'. $ this-> Dateiname. '__'. $ i, 'rb'); // Verwenden Sie den 'RB' -Modus, um binäre Daten stream_copy_to_stream ($ chunk, $ out) zu lesen; // Verwenden Sie stream_copy_to_stream, um fcLose ($ chunk) effizient zu kopieren; @unlink ($ this-> filepath. '/'. $ this-> fileName. '__'. $ i); } fcLose ($ out); } }
Serverkonfigurationsprüfung
Selbst wenn der Front-End- und Back-End-Code optimiert ist, kann das Problem dennoch bestehen. Die folgenden Serverkonfigurationen müssen überprüft werden:
- Die
LimitRequestBody
-Einstellung von Apache: Stellen Sie sicher, dass dieser Wert groß genug ist, um das Hochladen großer Dateien zu ermöglichen. - PHP
upload_max_filesize
undpost_max_size
Einstellungen: Diese beiden Werte müssen größer sein als die Größe der hochgeladenen Datei. - Einstellung von PHP
memory_limit
: Wenn die Backend -Dateien im Speicher verarbeitet, muss dieser Wert erhöht werden.
Zusammenfassung und Vorschläge
Um das Problem des Hochladens eines großen Dateischnittenes zu lösen, müssen die Konfigurationen für Front-End-, Back-End- und Serverkonfigurationen umfassend berücksichtigt werden. Durch Wiederherstellen von FormData -Objekten, Verwendung von Streaming- oder temporärer Dateiverführung und Anpassung der Serverkonfiguration kann das Problem des Hochladens von Dateien über 48 MB effektiv gelöst werden, und die effiziente Funktion mit großer Datei -Upload kann erreicht werden.
Das obige ist der detaillierte Inhalt vonWie löste ich das Problem, dass das Hochladen mit großem Datei -Slice keine Dateien über 48 MB verarbeiten kann?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Um ein CGI-Verzeichnis in Apache einzurichten, müssen Sie die folgenden Schritte ausführen: Erstellen Sie ein CGI-Verzeichnis wie "CGI-bin" und geben Sie Apache-Schreibberechtigungen. Fügen Sie den Block "scriptalias" -Richtungsblock in die Apache-Konfigurationsdatei hinzu, um das CGI-Verzeichnis der URL "/cgi-bin" zuzuordnen. Starten Sie Apache neu.

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

Wenn der Port -80 -Port der Apache 80 besetzt ist, lautet die Lösung wie folgt: Finden Sie den Prozess, der den Port einnimmt, und schließen Sie ihn. Überprüfen Sie die Firewall -Einstellungen, um sicherzustellen, dass Apache nicht blockiert ist. Wenn die obige Methode nicht funktioniert, konfigurieren Sie Apache bitte so, dass Sie einen anderen Port verwenden. Starten Sie den Apache -Dienst neu.

Es gibt 3 Möglichkeiten, die Version auf dem Apache -Server anzuzeigen: Über die Befehlszeile (apachect -v- oder apache2CTL -v) überprüfen Sie die Seite Serverstatus (http: // & lt; Server -IP- oder Domänenname & GT;/Server -Status) oder die Apache -Konfigurationsdatei (Serversion: Apache/& lt; Versionsnummer & GT;).).

Wie sehe ich die Apache -Version an? Starten Sie den Apache -Server: Verwenden Sie sudo Service Apache2, um den Server zu starten. Versionsnummer anzeigen: Verwenden Sie eine der folgenden Methoden, um die Version anzuzeigen: Befehlszeile: Führen Sie den Befehl apache2 -v aus. Seite Serverstatus: Greifen Sie in einem Webbrowser auf den Standardport des Apache -Servers (normalerweise 80) zu, und die Versionsinformationen werden unten auf der Seite angezeigt.

Apache kann aus den folgenden Gründen nicht beginnen: Konfigurationsdatei -Syntaxfehler. Konflikt mit anderen Anwendungsports. Berechtigungen Ausgabe. Aus dem Gedächtnis. Prozess -Deadlock. Dämonversagen. Selinux -Berechtigungen Probleme. Firewall -Problem. Software -Konflikt.

Wie konfigurieren Sie Zend in Apache? Die Schritte zur Konfiguration von Zend Framework in einem Apache -Webserver sind wie folgt: Installieren Sie Zend Framework und extrahieren Sie es in das Webserververzeichnis. Erstellen Sie eine .htaccess -Datei. Erstellen Sie das Zend -Anwendungsverzeichnis und fügen Sie die Index.php -Datei hinzu. Konfigurieren Sie die Zend -Anwendung (application.ini). Starten Sie den Apache -Webserver neu.

Um eine zusätzliche Servername -Anweisung von Apache zu löschen, können Sie die folgenden Schritte ausführen: Identifizieren und löschen Sie die zusätzliche Servername -Richtlinie. Starten Sie Apache neu, damit die Änderungen wirksam werden. Überprüfen Sie die Konfigurationsdatei, um Änderungen zu überprüfen. Testen Sie den Server, um sicherzustellen, dass das Problem behoben ist.
