Pregunta

Yo solía tener una ZF de controlador que fue el procesamiento de un fineuploader ajax upload.El código era simple:

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

Ahora estoy refactorización usando Symfony2 y tengo dificultades para hacer la misma cosa.Esto es lo que tengo hasta ahora:

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


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

Esto es lo que se envía desde el navegador:

------WebKitFormBoundaryYPzt2RqJ6W4awSfp Content-Disposition:form-data;name="qquuid"

b977c4b2-0edb-486b-aa86-4558275598aa ------WebKitFormBoundaryYPzt2RqJ6W4awSfp Content-Disposition:form-data;name="qqtotalfilesize"

14092 ------WebKitFormBoundaryYPzt2RqJ6W4awSfp Content-Disposition:form-data;name="qqfile";filename="ae35e28.png" Content-Type:image/png

------WebKitFormBoundaryYPzt2RqJ6W4awSfp--

Ahora, estoy seguro de que el formulario no será validado, debido a que los datos enviados no contiene ningún nombre para el formulario.En realidad, ni siquiera necesito para validar el formulario completo, solo el archivo cargado (como aquí Symfony2:cargar un archivo con la carga de un archivo de plugin), pero ¿cómo puedo utilizar la validación por ello?

¿Fue útil?

Solución

Finalmente, me imaginé a mí mismo.

En lugar de utilizar un formulario sin una clase, he creado una clase de formulario cuyo getName() método devuelve una cadena vacía.Me puse asignada=false para todos los otros campos, excepto qqfile y también se desactiva la protección csrf para el formulario.De esta manera, el formulario se presenten correctamente y el archivo de entrada validada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top