2016-07-19 111 views
3

我建立一个功能,多张图片上传到我们的网站,到目前为止,我这是我上传的形式:多图像上传只上传Symfony 3中的一张图片?

<?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'; 
    } 

} 

这则显示在枝条文件是这样的:

<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> 

当这个提交时,在测试过程中,我输出的是由表单传递给控制器​​的东西。这是输出:

[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 
          ) 

        ) 

      ) 

我可以选择一个图像,或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 
      ), 
     )); 

只有一个文件被提交。对于我现在没有解决方案,我会用JavaScript将[]添加到上传名称。