문제

FinePloader Ajax Upload를 처리하는 ZF 컨트롤러가있는 데 사용되었습니다. 코드는 간단했습니다 :

$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 Content-Disposition : 양식 데이터; 이름="qquuid"

B977C4B2-0EDB-486B-AA86-4558275598AA ------ WebKitFormBoundaryyPzT2RQJ6W4AWSFP 콘텐츠 배치 : 양식 데이터; 이름="QQTOUFFILESIZE"

14092. ------ WebKitFormBoundaryyPzT2RQJ6W4AWSFP 콘텐츠 배치 : 양식 데이터; 이름="QQFILE"; filename="ae35e28.png"콘텐츠 형식 : Image / PNG

------ WebKitFormBoundaryyPzT2RQJ6W4AWSFP -

이제 게시 된 데이터에 양식의 이름이 없기 때문에 양식이 유효성이 검사되지 않도록 알고 있습니다. 실제로, 나는 전체 양식을 검증 할 필요조차하지 않아도 업로드 된 파일 (여기서 파일 업로드 플러그인을 사용하여 파일을 업로드

에서 어떻게 유효성 검사를 사용합니까?

도움이 되었습니까?

해결책

나는 결국 그것을 나 자신을 알아 냈습니다.

클래스가없는 양식을 사용하는 대신 getName () 메서드가 빈 문자열을 반환하는 클래스 양식을 작성했습니다.QQFile을 제외한 다른 모든 필드에 대해 Mapped= False를 설정하고 양식에 대한 CSRF 보호를 비활성화했습니다.이런 식으로 양식이 제대로 제출되고 파일 입력이 유효성이 검사됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top