2015-08-05 22 views
1

У меня есть выполнивший: SF2 Handle File Uploads with DoctrinSymfony2/Multiple Загрузить

Теперь я пытаюсь сделать множественную загрузку файлов, но не могу найти новую обучающую программу для этого. Все, что я нашел, похоже на 2+ лет, и не работает.

Может ли кто-нибудь помочь мне с этой проблемой?

Я попытался изменения $ путь, $ файл в массив и добавьте Еогеасп ($ this-> файл как $ файлов) к загрузки() функции, но .... ошибка ....

Вот мой код:

Entity:http://pastie.org/private/1qvkhcdhojm1n1orfzuja

Контроллер:http://pastie.org/private/ppcoezaoicdufg5dsa9dw

Twig:http://pastie.org/private/eclba9e84kzfbh96ecgya

PS: Мне нужно что-то вроде этого в пути (в базе данных): «image1.jpeg, image2.jpeg, image3.jpeg, ... " Извините, но я настолько глуп с этим, только учусь ..

Спасибо

ответ

0

вот несколько примеров псевдо-код, показывающий, как я ускори сс в нескольких загруженных файлов и сохраняться объект для каждого загруженного файла

$form = $this->createForm('doc',null); 
    $request = $this->getRequest(); 
    if ('POST' === $request->getMethod()) { 
     $form->handleRequest($request); 
     if ($form->isValid()) { 
      $data=$form->getData(); 

      try { 
       $i=1; 
       // upload each file 
       foreach ($data['file'] as $item) { 
        $document = new Document(); 
        $document->setFile($item); 
        // upload file 

        $document->upload(); 

        $document->setUploadedBy($user->getUserName()); 
        // set thumbnail path 
        $em->persist($document); 

        // generate images and set paths 
        $imageService->optiPathSingle($document); 

        $i++; 
       } 

       return $this->redirect($this->generateUrl('gleisdreieck_core_index')); 

      } catch (\Exception $e) { 
       $form->addError(new FormError($e->getMessage()));     
      } 


     } 
     return array(
      "form"=>$form->createView(), 
      "tags"=>$tags 
     ); 
    } else{ 
     return array(
      "form"=>$form->createView(), 
      "tags"=>$tags 
     ); 
    } 

используется formbuilder:

class DocumentType extends AbstractType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder->add('file', 'file', array(
      'label' => 'Attachments', 
      'required' => true, 
      'attr' => array (
       'accept' => 'image/*', 
       'multiple' => 'multiple' 
      ) 
     )) 
     ->add('save', 'submit'); 
    } 
+0

Спасибо, Если я правильно понимаю, этот код создает несколько записей в базе данных. Я прав? Потому что мне нужна 1 запись в базе данных, путь к всем загруженным файлам. Что-то вроде этого: «image1.jpeg, image2.jpeg, image3.jpeg, ...» –

0

Так что я попытался это:

public function __construct(){ 
    $this->file = new ArrayCollection(); 
    $this->path = new ArrayCollection(); 
} 
public function setFile(UploadedFile $file = null) 
{ 
    foreach($file as $files){ 
     $this->file = $files; 
    } 
    // check if we have an old image path 
    if (isset($this->path)) { 
     // store the old name to delete after the update 
     $this->temp = $this->path; 
     $this->path = null; 
    } else { 
     $this->path = 'initial'; 
    } 
} 

Но получил ошибку:

Catchable Fatal Error: Argument 1 passed to DbBundle\Entity\File::setFile() must be an instance of Symfony\Component\HttpFoundation\File\UploadedFile, array given

Смежные вопросы