1

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"}}

この問題の解決策を知っている人はいますか?

4

2 に答える 2

0

あなたはこの問題を見たいと思うかもしれません:JSのフォームバグ

これに遭遇したとき、iFrame: true を強制しただけでうまくいきました。少し悲しくなりましたが、うまくいきます。:)

于 2013-06-28T16:25:40.400 に答える