Proceso de Ajax upload de archivos con Symfony2
-
21-12-2019 - |
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?
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.