2017-11-21 2 views
0

정말 이상한 문제가 있습니다. Symfony2에서 하나의 고유 한 양식에서 여러 파일을 보내고 있습니다. 그들은 내가 Network->headers을 확인하면서, 제대로 작동하는 것 그리고 그들은이 있습니다 : 내가 컨트롤러에서 해당 파일을받을 때,Symfony2는 POST 형식으로 전송 된 여러 파일에 액세스 할 수 없습니다.

------WebKitFormBoundaryqycNCCLBhUXBkZAv 
Content-Disposition: form-data; name="form[files]"; 
filename="image1.jpg" 
Content-Type: image/jpeg 

------WebKitFormBoundaryqycNCCLBhUXBkZAv 
Content-Disposition: form-data; name="form[files]"; 
filename="image2.png" 
Content-Type: image/png 

, 그것은 나에게 불가능려고하는 것은 그들을 얻을 수 있습니다 :

$form->handleRequest($request)->getData() 

오직 하나의 파일 (첫 번째 파일) 만 보여 주며, $request->files은 동일하게 작동하며 첫 번째 파일 만 보여줍니다.

은 너무 복잡하지 않아야 :/

이것은 컨트롤러에서 내 양식 코드 :

$form = $this->createFormBuilder($data) 
    ->add('name') 
    //->add('file') 
    ->add('files', FileType::class, array(
     'attr' => array(
      'data_class' => null, 
      'accept' => 'image/*', 
      'multiple' => true 
     ) 
    )) 
    ->getForm(); 

당신은 내가 잘못 여기서 뭘하는지에 대한 아이디어를 가지고 있습니까?

+0

파일 업로드에 대한 PHP 구성 제한을 확인 했습니까? 그냥 확실히 ^^ '작은 이미지로 시도하지 않는 경우 – Mcsky

+0

FileType의 Symfony \ Component \ Form \ Extension \ Core \ Type \ CollectionType을 선언하려 했습니까? – Mocrates

답변

0

symfony 다중 옵션을 true로 설정해야합니다.

$form = $this->createFormBuilder($data) 
      ->add('name') 
      //->add('file') 
      ->add('files', FileType::class, array(
       'multiple'=>true 
       'attr' => array(
        'data_class' => null, 
        'accept' => 'image/*', 
        'multiple' => 'multiple' 
       ) 
      )) 
      ->getForm(); 
0

답장을 보내 주셔서 감사합니다. 마침내 나는 해결책을 얻었다. Aleem 말했듯이 모든

첫째, 우리는 여러 업로드 파일이 형성 선언했을 때 createFormBuilder :

$form = $this->createFormBuilder() 
      ->add('file', FileType::class, array(
       'multiple' => true, 
       'attr' => array(
        'data_class' => null, 
        'accept' => 'image/*', 
        'multiple' => 'multiple' 
       ) 
      )) 
      ->getForm(); 

그 문제는 심포니 자습서가 여러 파일 업로드에 대한 준비가되어 있지 않은 것을, 그래서, 그것은 까다로운 그러나 그것을 할 수있는 방법이 있습니다. 그와

foreach ($data['file'] as $file) { 
       $entity = new Entity(); 
       $entity->setFile($file); 
       $entity->upload(); 

       $em->persist($entity); 
       $em->flush(); 

      } 

당신이 SetFile에 의해 업로드 할 수 있습니다 :

if ($request->isMethod('POST')) { 
$data = $form->handleRequest($request)->getData(); 

그런 다음 $ 데이터 안에 당신이 foreached 할 수있는 여러 UploadFile로 개체를 찾을 수 있습니다 대신

$form->handleRequest($request); 
if ($form->isValid() && $form->isSubmitted()) { 

의 당신은에 있습니다 일반적으로 $ form-> handleRequest에 의해 수행되는 작업.

Entity 클래스에서는 Lifecycle Callback을 사용할 수 없습니다.

TY

관련 문제