Der iframe-Transport überträgt keine Daten

Ich benutzejQuery-File-Upload mitjQuery-Iframe-Transport um zu versuchen, Unterstützung für ältere IE-Versionen zu erhalten.

Ich habe das eingestelltforceIframeTransport Option zutrue damit es sich in allen Browsern mehr oder weniger gleich verhält, aber ich scheine keine Daten auf der Serverseite zurückzuerhalten, unabhängig davon, ob der Browser den iframe-Transport verwendet.

Ich habe die Anforderungsheader serverseitig ausgespuckt und erhalte zurück:

array(
    Host => "*******"
    Connection => "keep-alive"
    Content-Length => "0"
    Accept => "*/*"
    Origin => "**************"
    X-Requested-With => "XMLHttpRequest"
    User-Agent => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
    DNT => "1"
    Referer => "***********"
    Accept-Encoding => "gzip,deflate,sdch"
    Accept-Language => "en-GB,en-US;q=0.8,en;q=0.6"
    Accept-Charset => "ISO-8859-1,utf-8;q=0.7,*;q=0.3"
    Cookie => "*********"
)

[*****Angezeigte ausgeblähte Informationen; das brauchst du nicht;)]

Welches OK aussehen, aber$_REQUEST ist leer (d. h.array()) und der Eingabepuffer ist auch leer:

$handle = fopen('php://input', 'r');

$file_data = '';

while(($buffer = fgets($handle, 4096)) !== false) {
    $file_data .= $buffer;
}

fclose($handle); // $file_data = '';

Das alles hat gut funktioniert, als ich nicht den iframe-Transport verwendet habe, aber ich brauche IE-Unterstützung ... hat jemand Erfahrung mit dem Übertragen von Dateien mit iframes und weiß vielleicht, warum keine Daten durchkommen?

Wenn ich benutzejQuery-File-Upload / js / jquery.iframe-transport.js und erzwingen, dass der Iframe-Transport in Chrome funktioniert, aber die Anforderungen schaffen es nicht einmal zum Server im Internet Explorer.

Wenn ich benutzejquery-iframe-transport / jquery.iframe-transport.js und erzwingen, dass der Iframe-Transport in Chrome unterbrochen wird, aber das ist in Ordnung, da Chrome die ordnungsgemäße Übertragung von XHR-Dateien unterstützt.und Die Anfragen treffen zumindest den Server im IEaber Es kommen keine Daten durch.

Ich habe mein Skript aktualisiert, um beide Übertragungsmethoden zu unterstützen:

if(empty($_FILES)) {
    $handle = fopen('php://input', 'r');

    $file_data = '';

    while(($buffer = fgets($handle, 4096)) !== false) {
        $file_data .= $buffer;
    }

    fclose($handle);
} else {
    $file_data = file_get_contents($_FILES['files']['tmp_name'][0]);
}

Aber ich kann immer noch keine Daten in IE abrufen, egal was ich tue.

Wenn ich "IE" sage, teste ich gerade speziell in IE 8. Ich brauche Unterstützung bis 7.Dieser Typ Ansprüche unterstützen den ganzen Weg zurück zum IE 6.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage