Pergunta

Eu costumava ter uma ZF controlador de processamento de um fineuploader ajax upload.O código foi simples:

$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];

Agora eu estou refatoração usando o Symfony2 e tenho dificuldades de fazer a mesma coisa.Isso é o que eu tenho até agora:

$form = $this->createFormBuilder()
    ->add('qqfile', 'file', array('constraints' => new File(array('maxSize' => '2M'))))
    ->getForm();


    if ($form->isValid()) {
       die('yes');
    } else {
       die('no');
    }

Isto é o que é enviado pelo navegador:

------WebKitFormBoundaryYPzt2RqJ6W4awSfp Content-Disposition:formulário de dados;nome="qquuid"

b977c4b2-0edb-486b-aa86-4558275598aa ------WebKitFormBoundaryYPzt2RqJ6W4awSfp Content-Disposition:formulário de dados;nome="qqtotalfilesize"

14092 ------WebKitFormBoundaryYPzt2RqJ6W4awSfp Content-Disposition:formulário de dados;nome="qqfile";nome de ficheiro="ae35e28.png" Content-Type:image/png

------WebKitFormBoundaryYPzt2RqJ6W4awSfp--

Agora, eu tenho certeza que o formulário não seja validado, porque os dados Postados não contém nenhum nome para o formulário.Na verdade, eu não preciso nem para validar todo o formulário, o arquivo carregado (como aqui Symfony2:fazer o upload de um arquivo usando um arquivo de plugin de upload), mas como faço para usar a validação para ele?

Foi útil?

Solução

Eu finalmente descobri a mim mesmo.

Em vez de usar um formulário sem uma classe, eu criei uma classe de formulário cujo getName() método que retorna uma seqüência de caracteres vazia.Eu definida mapeada=false para todos os outros campos, exceto qqfile e também desativou a proteção csrf para o formulário.Desta forma, o formulário fica enviados corretamente e o arquivo de entrada validado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top