Symfony2 上传多个文件
Symfony2 Upload multiple files
大家好,我还在学习symfony2,我想处理将多个文件上传到服务器。我尝试以一种形式执行 2 个实体。
我有文档、产品实体和
形成 CreateProductType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text') // product name, quantity, description, etc
->add('file','file',array(
'required' => false,
'mapped' => false,
'data_class' => 'AppBundle\Entity\Document',
'attr' => array(
'accept' => 'image/*',
'multiple' => 'multiple',
)
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Product'
));
}
我应该在控制器中做什么以将文件放入上传文件夹,插入新产品
name,description,quantity,price, etc
和文件(照片)
id, path, product_id
到数据库?
提前致谢。
编辑。
我的文档实体看起来像 this Document.php
如果使用多个数组,您应该在构建器中使用集合:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('files', 'collection', array(
'type' => 'file',
'options' => array(
'required' => false,
'mapped' => false,
'attr' => array(
'accept' => 'image/*',
'multiple' => 'multiple',
)
)
))
->add('product', new ProductType())
->add('save', 'submit', array(
'label' => 'Submit',
'attr' => array('class' => 'btn btn-default')
));
}
然后在实体中使用数组集合:
/**
* @Assert\File(maxSize="6000000")
*/
public $files;
public function __construct()
{
$this->files = new ArrayCollection();
}
/**
* Add file
*
* @param UploadedFile $file
* @return UploadedFile
*/
public function addFile(UploadedFile $file)
{
$this->files[] = $file;
return $this;
}
/**
* Remove file
*
* @param UploadedFile $file
*/
public function removeFile(UploadedFile $file)
{
$this->files->removeElement($file);
}
因为多次上传需要有一个数组名name="files[]"
来存放多个文件
参见: Multiple file upload with Symfony2
和
Symfony 2 Form collection field with type file
大家好,我还在学习symfony2,我想处理将多个文件上传到服务器。我尝试以一种形式执行 2 个实体。 我有文档、产品实体和
形成 CreateProductType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text') // product name, quantity, description, etc
->add('file','file',array(
'required' => false,
'mapped' => false,
'data_class' => 'AppBundle\Entity\Document',
'attr' => array(
'accept' => 'image/*',
'multiple' => 'multiple',
)
));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Product'
));
}
我应该在控制器中做什么以将文件放入上传文件夹,插入新产品
name,description,quantity,price, etc
和文件(照片)
id, path, product_id
到数据库? 提前致谢。
编辑。 我的文档实体看起来像 this Document.php
如果使用多个数组,您应该在构建器中使用集合:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('files', 'collection', array(
'type' => 'file',
'options' => array(
'required' => false,
'mapped' => false,
'attr' => array(
'accept' => 'image/*',
'multiple' => 'multiple',
)
)
))
->add('product', new ProductType())
->add('save', 'submit', array(
'label' => 'Submit',
'attr' => array('class' => 'btn btn-default')
));
}
然后在实体中使用数组集合:
/**
* @Assert\File(maxSize="6000000")
*/
public $files;
public function __construct()
{
$this->files = new ArrayCollection();
}
/**
* Add file
*
* @param UploadedFile $file
* @return UploadedFile
*/
public function addFile(UploadedFile $file)
{
$this->files[] = $file;
return $this;
}
/**
* Remove file
*
* @param UploadedFile $file
*/
public function removeFile(UploadedFile $file)
{
$this->files->removeElement($file);
}
因为多次上传需要有一个数组名name="files[]"
来存放多个文件
参见: Multiple file upload with Symfony2 和 Symfony 2 Form collection field with type file