Вопрос

У меня был контроллер ZF, который обрабатывает загрузку Fineuploader AJAX. Код был простым:

$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="qquuid"

B977C4B2-0EDB-486B-AA86-4558275598AA ------ WebKitformBOUNDAYYPZT2RQJ6W4AWSFP Content-Data-Data; name="qqtotalfilesize"

14092 ------ WebKitformBOUNDAYYPZT2RQJ6W4AWSFP Content-Data-Data; name="qqfile"; filename="AE35E28.png" Content типа: Изображение / PNG

------ webkitformboundaryypzt2rqj6w4awsfp -

Теперь я точно знаю, что форма не будет подтверждена, потому что размещенные данные не содержат имени для формы. На самом деле, мне даже не нужно контролировать всю форму, просто загруженный файл (например, здесь

Это было полезно?

Решение

Я в конечном итоге подумал его.

вместо того, чтобы использовать форму без класса, я создал классную форму, чья GetName () метод возвращает пустую строку.Я установил Capape= False для всех других полей, кроме QQFile, а также отключил защиту CSRF для формы.Таким образом, форма правильно отправляется, а ввод файла подтвержден.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top