2016-07-19 27 views
3

私は、当社のウェブサイトに複数の画像をアップロードする機能を構築していて、これまでのところ、私は私のアップロードフォームとしてこれを持っている:複数の画像アップロードSymfony 3で1つの画像のみをアップロードしますか?

<div class="tabs-panel" id="panel3v"> 
     {{ form_start(iu,{action:path('admin_upload-images')}) }} 

     <div class="row"> 
      <div class="small-3 medium-3 large-3 columns field-label"> 
       <label>Image ID</label> 
      </div> 
      <div class="small-9 medium-9 large-9 columns"> 
       {{ form_widget(iu.id) }} 
       {{ form_errors(iu.id) }} 
      </div> 
     </div> 

     <div class="row"> 
      <div class="small-3 medium-3 large-3 columns field-label"> 
       <label>Image Upload</label> 
      </div> 
      <div class="small-9 medium-9 large-9 columns"> 
       {{ form_widget(iu.image) }} 
       {{ form_errors(iu.image) }} 
      </div> 
     </div> 

     <div class="row"> 
      <div class="small-6 medium-6 large-6 columns"> 
       <button type="submit" class="button" id="saveBtn">Save Changes</button> 
      </div> 
     </div> 

     {{ form_end(iu) }} 
    </div> 
:これは、このようなファイル小枝に表示され

<?php 
namespace Tyson\AdminBundle\Form; 

use Doctrine\ORM\EntityRepository; 
use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 

use Symfony\Component\Form\Extension\Core\Type\FileType; 
use Symfony\Component\Form\Extension\Core\Type\IntegerType; 

class IuType extends AbstractType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 

     $builder->add('id', IntegerType::class); 
     $builder->add('image', FileType::class, array(
      'attr' => array(
       'multiple' => 'true', 
       'data_class' => null 
      ) 
     )); 
    } 

    public function getName() 
    { 
     return 'iu'; 
    } 

} 

これが送信されると、テスト中にフォームにコントローラに渡されたものを出力します。これが出力されます。

[files] => Symfony\Component\HttpFoundation\FileBag Object 
    (
     [parameters:protected] => Array 
      (
       [iu] => Array 
        (
         [image] => Symfony\Component\HttpFoundation\File\UploadedFile Object 
          (
           [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
           [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => CnY8dRqXYAAoaAw.jpg 
           [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg 
           [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 35164 
           [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0 
           [pathName:SplFileInfo:private] => /tmp/phpibZuVW 
           [fileName:SplFileInfo:private] => phpibZuVW 
          ) 

        ) 

      ) 

私は1枚の画像、または100枚の画像を選択することができ、そして、まだフォームが唯一の私のコントローラが何かを行う前に、一つの画像を渡しています。参考までに、これはこれまでのところ、私のコントローラのためのコード

されています:

<?php 

namespace Tyson\AdminBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\Security\Core\SecurityContext; 
use Symfony\Component\Security\Core\User\UserInterface; 

use Tyson\CoreBundle\Entity\Images; 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Cookie; 
use Symfony\Component\HttpFoundation\Session\Session; 
use Symfony\Component\Form\Form; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\RedirectResponse; 
use Symfony\Component\HttpFoundation\JsonResponse; 
use Symfony\Component\Filesystem\Filesystem; 
use Symfony\Component\Filesystem\Exception\IOExceptionInterface; 

use Symfony\Component\HttpFoundation\File\UploadedFile; 

class UploadController extends Controller 
{ 
    public function uploadimagesAction(Request $request) 
    { 

     $fs = new Filesystem(); 

     $dm = $this->getDoctrine()->getManager(); 

     $dir = '/var/www/html/tyson/web/uploads/images/'; 

     $request = $this->get('request_stack')->getCurrentRequest(); 

     $formdet = $request->request->get('iu'); 
     $imgId = $formdet['id']; 

     $folderPath = '/var/www/html/tyson/web/uploads/images/'.$imgId; 
     $imgDirectory = '/var/www/html/tyson/web/uploads/images/'.$imgId.'/'; 

     $folderCheck = $fs->exists($folderPath); 

     print_r($request); 
     die(); 

    } 

} 

私はfile出力は、フォームが一度提出されたとして(コントローラに複数の画像ではなく含まれている必要があることを想像します繰り返します)、私はこれが起こるために間違って何をしていますか?

答えて

0

同じ問題が

  $builder->add('files', FileType::class, array('required' => false, 
      'mapped' => false, 
      'attr' => array(
       'multiple' => true 
      ), 
     )); 

1つのファイルのみが提出された私を形成します。今は私のための解決策はありません、私はアップロード名にjavascriptで[]を追加します。

関連する問題