Ich verwende Plupupload , um Dateien hochzuladen. Wenn ich versuche, ein exe
mit IE9 zu laden und die Dateigröße über upload_max_filesize
oder post_max_size
liegt, ist die hochgeladene Datei beschädigt.
Dies ist das PHP-Skript, das ich verwende:
%Vor%Upload erfolgt über die HTML-Seite:
%Vor% Wenn die exe
beschädigt sind, wenn ich versuche, sie mit notepad++
zu öffnen, finde ich:
Meine Einstellung:
%Vor%php.ini
%Vor%Zusätzliche Informationen
VERSUCHEN SIE SICH SELBST
Ich habe ein Paket für jeden erstellt, der es ausprobieren möchte.
Paket herunterladen: Ссылка
My plupload-2.1.2.zip
enthält außerdem eine beschädigte Upload-Datei im Ordner plupload-2.1.2/examples/upload/file_54c4c1d05c2ef
und die Datei, die versucht wird, plupload-2.1.2/examples/TryMe.exe
Bereiten Sie sich auf den Test vor (ich verwende XAMPP Version 1.8.3 ):
plupload-2.1.2.zip
in deinem htdocs
php.ini
upload_max_filesize=22M
post_max_size=22M
(weniger auf TryMe.exe Dateigröße 23MB), starte Apache neu http://localhost/plupload-2.1.2/examples/custom.html
%YourHtdocs%/plupload-2.1.2/examples/TryMe.exe
und laden Sie %YourHtdocs%/plupload-2.1.2/examples/upload/
und finde die hochgeladene Datei php.ini
upload_max_filesize=24M
post_max_size=24M
(bis zu TryMe.exe Dateigröße 23MB), starte Apache neu %YourHtdocs%/plupload-2.1.2/examples/TryMe.exe
und laden Sie %YourHtdocs%/plupload-2.1.2/examples/upload/
und finde die hochgeladene Datei Was wir wissen ist, dass eine intakte Datei in Chunks aufgeteilt wird, denen jeweils ein HTTP multipart/form-data
Header und ein Content-Disposition
Header vorangestellt sind. Der erste wird immer korrekt entfernt, der zweite nicht
Das gibt uns 3 Möglichkeiten:
Der Grund für eine der oben genannten Ursachen könnte eine destruktive Filterung durch eine Firewall, ein Antivirenprogramm oder einen anderen Dienst sein, der aus irgendeinem Grund den Netzwerkverkehr oder RAM- / Dateisystemaktivitäten übergehen muss. Für 1. könnte es auch ein Bug in der Browser / JavaScript / Flash / Silverlight / PlUpload-Engine sein. Für 2. könnte es natürlich sein, dass Apache etwas kaputt macht, aber das ist extrem unwahrscheinlich, da es die Daten 1: 1 an PHP weiterleitet. Jetzt können wir für 3. einen Fehler in PHP nicht ausschließen, aber das ist zu unwahrscheinlich, da PHP hier eine Konstante ist und die Ergebnisse mit verschiedenen Browsern variieren. Aber ich kann mir vorstellen, dass PHP die Datei erhält, zusammen mit der zweiten Kopfzeile speichert, dann die Datei gesperrt, weil ein Dienst sie filtert, die Filterung lange dauert, weil die Datei nicht vertrauenswürdig ist und PHP versucht, die zweite Kopfzeile zu entfernen, aber der Zugriff verweigert wird weil die Filterung immer noch läuft und am Ende bleibt eine Datei mit Header übrig. Die unterschiedlichen Ergebnisse mit verschiedenen Browsern können durch unterschiedliche Chunk-Größen oder einfach durch die Browser-Leistung erklärt werden.
Leider ist das alles nur Spekulation. Jetzt, da Microsoft sein Bestes getan hat, um es so schwer wie möglich zu machen, den IE herunterzustufen, kann ich es momentan nicht mit IE9 testen. Alles, was ich Ihnen geben kann, sind einige Debugging-Anweisungen:
Setzen Sie in Ihrer php.ini
%Vor%Damit werden alle POST-Anforderungen auf diesem Server vollständig getrennt, aber Sie können die Datei-Upload-Anforderungen lesen und ausgeben.
Fügen Sie in Ihrer upload.php diese zwei Zeilen vor jedem anderen Code hinzu:
%Vor%Starten Sie Apache und laden Sie TryMe.exe mit IE9 hoch. Neben Ihrer upload.php sollte nun eine out.txt-Datei stehen, die alle relevanten Daten zu den Datei-Upload-Anfragen enthält. Bitte laden Sie diese Datei irgendwo hoch und geben Sie uns einen Link dazu.
Tags und Links javascript php plupload chunked-encoding