質問

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コンテンツ配置:フォームデータ。 name="qquid"

B977C4B2-0DB-486B-AA8-455827598-4558275598-4558275598-4558275598-4558275598-4558275598 ------- WebKitFormBoundAryypzt2RQJ6W4AWSFP Content-Desposition:form-data; name="QQTotalFileSize"

14092 ------- WebKitFormBoundAryypzt2RQJ6W4AWSFP Content-Desposition:form-data; name="qqfile"; filename="ae35e28.png" content-type: 画像/ png

------ WebKitFormBoundAryyPZT2RQJ6W4AWSFP -

今、投稿されたデータにフォームの名前が含まれていないため、フォームが検証されないことを確認します。実際には、アップロードされたファイルだけで、アップロードされたファイルだけを検証する必要さえありません(ここにのような symfony2:ファイルのアップロードプラグインを使用してファイルをアップロードしますが、検証を使用するにはどうすればいいですか?

役に立ちましたか?

解決

最終的に自分自身を考え出した。

クラスなしでフォームを使用する代わりに、GetName()メソッドが空の文字列を返すクラスフォームを作成しました。QQFILEを除くすべての他のフィールドにMapped= Falseを設定し、フォームのCSRF保護を無効にします。このようにして、フォームが正しく送信され、ファイル入力が検証されました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top