Domanda

L'ho utilizzato per un controller ZF che stava elaborando un caricamento di Ajax di FineUploader. Il codice era semplice:

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

Ora sto refactorendo usando symfony2 e ho difficoltà a fare la stessa cosa. Questo è quello che ho finora:

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


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

Questo è ciò che viene inviato dal browser:

.

------ WebKITFORMBOUNDAYYPZT2RQJ6W4AWSFP CONTENT-DISTTING: modulo-dati; NAME="QQUUID"

B977C4B2-0EDB-486B-AA86-4558275598AA ------ WebKITFORMBOUNDARYYPZT2RQJ6W4AWSFP-DISTTING-DISTING: DATI-DATI; NAME="QQTOTALISIZE"

14092 ------ WebKITFORMBOUNDARYYPZT2RQJ6W4AWSFP-DISTTING-DISTING: DATI-DATI; NAME="QQFILE"; FILENAME="AE35E28.PNG" Tipo di contenuto: Immagine / PNG

------ WebKITFORMBOUNDARYYPZT2RQJ6W4AWSFP -

Ora, so per certo che il modulo non sarà convalidato, poiché i dati pubblicati non contiene alcun nome per il modulo. In realtà, non ho nemmeno bisogno di convalidare l'intera forma, solo il file caricato (come qui symfony2: caricare un file utilizzando un file upload plugin ), ma come uso la convalida per questo?

È stato utile?

Soluzione

Alla fine ho capito me stesso.

Invece di utilizzare un modulo senza una classe, ho creato un modulo di classe il cui metodo getName () restituisce una stringa vuota.Ho impostato mappato= falso per tutti gli altri campi tranne QQFile e disabilitato anche la protezione CSRF per il modulo.In questo modo, il modulo viene presentato correttamente e l'ingresso del file convalidato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top