以前は、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 Content-Disposition: フォーム データ。名前="イカ"
b977c4b2-0edb-486b-aa86-4558275598aa ------WebKitFormBoundaryYPzt2RqJ6W4awSFp Content-Disposition: フォームデータ。name="qqtotalfilesize"
14092 ------WebKitFormBoundaryYPzt2RqJ6W4awSFp Content-Disposition: フォームデータ; 名前="qqfile"; filename="ae35e28.png" コンテンツ タイプ: 画像/png
------WebKitFormBoundaryYPzt2RqJ6W4awSFp--
POSTされたデータにはフォームの名前が含まれていないため、フォームが検証されないことは確かです。実際には、フォーム全体を検証する必要はなく、アップロードされたファイルだけを検証する必要さえありません (ここではSymfony2: upload a file using a file upload plugin のように) が、検証をどのように使用すればよいでしょうか?