我正在尝试通过表单上传多个文件,但我一次只能上传一个文件,这是我在浏览器中标记的最后一个文件.有没有办法使用简单的表单使用Symfony2上传更多图像?这是我用来标记多个文件的表单的twig模板:
{{ form_widget(form.post_image, { 'attr': {'multiple': 'multiple' }}) }}
Run Code Online (Sandbox Code Playgroud) 我尝试了一个新的JQuery库实现:dropzone.js
该库提供了一个带拖放解决方案的良好的多上传界面.
似乎Symfony的多上传系统并不容易.
我有这个错误:
Error: Cannot use object of type Symfony\Component\HttpFoundation\File\UploadedFile as array in /vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Csrf/EventListener/CsrfValidationListener.php line 87
Run Code Online (Sandbox Code Playgroud)
我的实体文件:
/**
* @ORM\Entity
* @ORM\Table(name="media__file")
* @ORM\HasLifecycleCallbacks
*/
class File
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @ORM\Column(type="string", length=255)
* @Assert\NotBlank
*/
public $name;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
public $path;
/**
* @Assert\File(maxSize="6000000")
*/
public $file;
public function getAbsolutePath()
{
return null === $this->path ? null : $this->getUploadRootDir().'/'.$this->path;
}
public function getWebPath()
{ …Run Code Online (Sandbox Code Playgroud) 如何在symfony中上传多个文件?我不太确定怎么做'symfony方式'.我阅读了如何使用Doctrine处理文件上传,但是如何上传许多文件?
我尝试使用集合字段类型并将setFiles方法添加到对象模型
Run Code Online (Sandbox Code Playgroud)public function setFiles($files) { $this->files = $files; foreach ($files as $file) { $file->setObject($this); } }
但有异常(这总是适用于没有任何文件的普通模型)
致命错误:调用未定义的方法Symfony\Component\HttpFoundation\File\UploadedFile :: setObject()
请帮我.
更新:我用主文件第二种形式与文件,并...
Run Code Online (Sandbox Code Playgroud)$files = $this->getRequest()->files->get('val_image'); foreach($files as $file){ $foto = new Foto; $foto->setFile($file); $foto->setPremises($premises->getPremises()); $this->getEm()->persist($foto); }
其作品 :)