Symfony 3 表单多文件上传问题
Symfony 3 form multiple file upload issue
我一直在尝试在一个表单中上传多个文件,但我就是找不到适合我的解决方案。每当我向输入添加多个文件时,只有其中一个文件会传递到控制器并上传。
Controller.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 构建的第一个项目,所以我假设一定有一些我可能忽略的地方。
您应该将 multiple
添加到您的 FileType
字段选项中:
->add('images', FileType::class, array(
'multiple' => true, // here it is
'label' => false,
...
我一直在尝试在一个表单中上传多个文件,但我就是找不到适合我的解决方案。每当我向输入添加多个文件时,只有其中一个文件会传递到控制器并上传。
Controller.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 构建的第一个项目,所以我假设一定有一些我可能忽略的地方。
您应该将 multiple
添加到您的 FileType
字段选项中:
->add('images', FileType::class, array(
'multiple' => true, // here it is
'label' => false,
...