【问题标题】:Symfony 3 form multiple file upload issueSymfony 3 表单多文件上传问题
【发布时间】:2016-08-21 13:45:43
【问题描述】:

我一直在尝试在一个表单中上传多个文件,但我找不到适合我的解决方案。每当我在输入中添加多个文件时,只有其中一个文件会传递到控制器并上传。

控制器.php

        // File uploading
        $files = $auto->getImages();
        $images = array();

        if($files != null) {
            $key = 0;

            foreach ($files as $file)
            {
                $fileName = md5(uniqid()) . '.' . $file->guessExtension();
                $file->move(
                    $this->getParameter('car_adds'),
                    $fileName
                );
                $images[$key++] = $fileName;
            }
            $auto->setImages($images);
        }

$auto->getImages() 给了我一个字符串值而不是一个数组值,因此,每当我尝试 foreach 循环时,我得到一个空结果并且没有文件上传。

我尝试将我的图像表单小部件重命名为“form[images][]”而不是由 formbuilder 生成的“form[images]”但是当我这样做时出现以下错误:

FormType.php

          ->add('images', FileType::class, array(
            'label' => false,
            'data_class' => null,
            'label_attr' => array('class' => $label_offset),
            'required' => false,
            'attr' => array(
                'class' => $styles,
                'multiple' => true)))

Entity.php

    /**
* @var array
*
* @Assert\Image(
*     mimeTypes = {
*   "image/png",
*   "image/pjpeg",
*   "image/jpeg",
*   "image/gif"
* },
*     mimeTypesMessage="Failas yra netinkamo formato",
*     maxSize = "10M",
*     maxSizeMessage="Failas yra per didelis"
* )
* @ORM\Column(name="images", type="array", nullable=true)
*/
private $images;

 /**
 * Set images
 *
 * @param array $images
 *
 * @return Auto
 */
public function setImages($images)
{
    $this->images = $images;

    return $this;
}

/**
 * Get images
 *
 * @return array
 */
public function getImages()
{
    return $this->images;
}

这是我尝试使用 Symfony 3 构建的第一个项目,所以我假设肯定有一些我可能忽略的东西。

【问题讨论】:

    标签: php forms symfony symfony-2.7


    【解决方案1】:

    您应该将multiple 添加到您的FileType 字段选项中:

     ->add('images', FileType::class, array(
            'multiple' => true, // here it is
            'label' => false,
            ...
    

    【讨论】:

      猜你喜欢
      • 2018-04-12
      • 1970-01-01
      • 2021-09-03
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      相关资源
      最近更新 更多