我曾经有一个正在处理 Fineuploader ajax 上传的 ZF 控制器。代码很简单:
$adapter = new Zend_File_Transfer_Adapter_Http();
$filename = uniqid();
$adapter->addFilter('Rename', APPLICATION_PATH . "/../public/temp-images/" . $filename);
$adapter->addValidator('Size', false, array("max" => "2MB"));
$adapter->addValidator('isImage', false);
if ($adapter->receive()) {
// Get mime type
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_file($finfo, APPLICATION_PATH . "/../public/temp-images/" . $filename);
finfo_close($finfo);
preg_match('/(.*)\/(.*)/', $mimeType, $matches);
$extension = '.' . $matches[2];
现在我正在使用 Symfony2 进行重构,但我在做同样的事情时遇到了困难。这是我到目前为止所拥有的:
$form = $this->createFormBuilder()
->add('qqfile', 'file', array('constraints' => new File(array('maxSize' => '2M'))))
->getForm();
if ($form->isValid()) {
die('yes');
} else {
die('no');
}
这是从浏览器发送的内容:
------WebKitFormBoundaryYPzt2RqJ6W4awSFp 内容处置:表单数据;名称="qquid"
b977c4b2-0edb-486b-aa86-4558275598aa ------WebKitFormBoundaryYPzt2RqJ6W4awSFp 内容处置:表单数据;名称="qq总文件大小"
14092 ------WebKitFormBoundaryYPzt2RqJ6W4awSFp 内容处置:表单数据;名称="qq文件"; 文件名="ae35e28.png" 内容类型:image/png
------WebKitFormBoundaryYPzt2RqJ6W4awSFp--
现在,我确定不会验证表单,因为 POSTed 数据不包含表单的名称。实际上,我什至不需要验证整个表单,只需要验证上传的文件(比如这里Symfony2: upload a file using a file upload plugin),但我该如何使用验证呢?