TL;DR: Zend_Form_Element_File 在IE10上表现不佳
好吧,请耐心等待我解开这个关于我遇到过的最糟糕的错误之一的故事。(仅适用于IE10)
我正在使用 Zend_Form (Zend Framework 1.12) 和 Zend_Form_Element_File:
$file = (new Zend_Form_Element_File('file'))
->setRequired(false);
我还在适当的时候使用jQuery Form Plugin来使用 AJAX 或 iFrame。(这是一个新的开发,以前我只使用 iframe [并且在那个版本中发现了这个错误],我后来将 iframe 移动到了 XHR2 Feature Detected)。
所以我们有这个表单,AJAXly 将文件和其他变量提交给服务器,服务器尝试通过 Zend_Form 验证它。没什么大不了。Chrome 和 Firefox 发送 Zend 检测到并且没有问题的空文件,IE 没有发送与文件相关的任何内容,现在正在发送一个名为 file 的空参数(不是空文件)并且 Zend_Form 说“文件太大。”
文件数组是空的,所以我实现了 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"}}
有谁知道这个问题的解决方案?