TL;DR: Zend_Form_Element_File がIE10でうまく動作しません
よし、今まで遭遇した中で最悪のバグの 1 つについてこの話を解明する間、我慢してくれ。( IE10にのみ適用)
Zend_Form_Element_File で Zend_Form (Zend Framework 1.12) を使用しています。
$file = (new Zend_Form_Element_File('file'))
->setRequired(false);
また、必要に応じて AJAX または iFrame を使用するためにjQuery Form Pluginを使用しています。(これは新しい開発です。以前は iframe のみを使用していました [そして、このバグはそのバージョンで見つかりました]。その後、iframe を XHR2 Feature Detected に移動しました)。
したがって、AJAXly でファイルとその他の変数をサーバーに送信するこのフォームがあり、サーバーは Zend_Form を介して検証を試みます。大きな問題ではない。Chrome と Firefox は空のファイルを送信しますが、これは Zend が検出して問題なく動作し、IE はファイルに関連するものを何も送信していませんでしたが、現在は file という名前の空のパラメータ (空のファイルではない) を送信しており、Zend_Form は「ファイルが大きすぎます」と言っています。 ."
files 配列が空なので、Zend Issue ZF-12189で提案されているパッチを実装して、次を取得しました。
$check = $this->_getFiles($files, false, true);
if (empty($check)) {
if ($this->_options['ignoreNoFile']) {
return true;
}
return false;
}
しかし、問題が解決$check
しないため評価していませんempty
。
関連するリクエスト ヘッダー:
X-Requested-With: XMLHttpRequest
Accept: text/html, */*; q=0.01
Content-Type: multipart/form-data; boundary=---------------------------7dd299161d06c6
Content-Length: 580
リクエスト本文:
-----------------------------7dd299161d06c6
Content-Disposition: form-data; name="entryId"
9
-----------------------------7dd299161d06c6
Content-Disposition: form-data; name="csrf"
b9774f3998695465d9b3079eb028e342
-----------------------------7dd299161d06c6
Content-Disposition: form-data; name="description"
test
-----------------------------7dd299161d06c6
Content-Disposition: form-data; name="MAX_FILE_SIZE"
2097152
-----------------------------7dd299161d06c6
Content-Disposition: form-data; name="file"
-----------------------------7dd299161d06c6--
フォーム メッセージ:
{"file":{"fileUploadErrorIniSize":"File 'file' exceeds the defined ini size"}}
この問題の解決策を知っている人はいますか?