jQuery-File-UploadとjQuery-Iframe-Transportを使用して、古いバージョンの IE のサポートを取得しようとしています。
forceIframeTransport
すべてのブラウザーでほぼ同じように動作するようにオプションを設定しましたtrue
が、iframe トランスポートを使用する場合、ブラウザーに関係なくサーバー側でデータを取得できないようです。
サーバー側のリクエストヘッダーを吐き出し、戻ってきました:
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 => "*********"
)
[*****
はブリープアウトされた情報を示します。あなたはそれを必要としません;)]
これは問題ないように見えますが、$_REQUEST
空 (すなわちarray()
) であり、入力バッファも空です:
$handle = fopen('php://input', 'r');
$file_data = '';
while(($buffer = fgets($handle, 4096)) !== false) {
$file_data .= $buffer;
}
fclose($handle); // $file_data = '';
これは、iframe-transport を使用していないときにすべて正常に機能しましたが、IE のサポートが必要です... iframe を使用してファイルを送信した経験があり、データが送信されない理由を知っている人はいますか?
jQuery-File-Upload / js / jquery.iframe-transport.jsを使用して iframe トランスポートを強制すると、Chrome で動作しますが、リクエストは IE のサーバーに到達しません。
jquery-iframe-transport / jquery.iframe-transport.jsを使用して iframe トランスポートを強制すると、Chrome で壊れますが、Chrome は適切な XHR ファイル転送をサポートし、リクエストは少なくとも IE のサーバーにヒットしますが、データは送信されないため、問題ありません。終えた。
いずれかの転送方法をサポートするようにスクリプトを更新しました。
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]);
}
しかし、繰り返しますが、何をしてもIEでデータを取得できないようです。
「IE」と言うとき、私は今 IE 8 で具体的にテストしています。ただし、7 へのサポートが必要です。この男は、IE 6 までさかのぼってサポートしていると主張しています。