我目前正在将单个图像文件一次上传到mysql数据库,但是我需要上传800个图像,所以我想选择所有图像并通过一次单击上传它们。这是我的PHP控制器
/**
* @Route("/insert", name="satellite_images_create")
*/
public function insertAction(Request $request)
{
$satelliteImage=new satelliteImage;
$form=$this->createFormBuilder($satelliteImage)
->add('file')
->add('save',SubmitType::class,array('label'=>'Insert Image','attr'=>array('class'=>'btn btn-primary','style'=>'margin-bottom:15px')))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em=$this->getDoctrine()->getManager();
$satelliteImage->upload();
$em->persist($satelliteImage);
$em->flush();
$this->addFlash(
'notice',
'Image inserted successfully'
);
return $this->redirectToRoute('satellite_images');
}
return $this->render('satelliteImages/insert.html.twig',array(
'form'=>$form->createView()));
}
SatelliteImage ENTITY 具有处理上传的功能
public function upload()
{
// the file property can be empty if the field is not required
if (null === $this->getFile()) {
return;
}
$imgFile=$this->getFile();
$this->setImage(file_get_contents($imgFile));
$this->getFile()->move(
$this->getUploadRootDir(),
$this->getFile()->getClientOriginalName()
);
// set the path property to the filename where you've saved the file
$this->path = $this->getFile()->getClientOriginalName();
// clean up the file property as you won't need it anymore
$this->file = null;
}
这是我的枝条文件
{% extends 'base.html.twig' %}
{% block body %}
<h2 class="page-header">Insert Image</h2>
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
{% endblock %}
如何修改表单和上传功能,以便我可以选择要上传的所有图像文件?谢谢。
答案 0 :(得分:1)
我建议您查看DropzoneJS http://www.dropzonejs.com/
这是一个用于处理多个文件上传的javascript前端。它的工作原理是将文件传递给PHP后端进行存储/处理。
编辑 - 添加
如果您需要有关如何将DropzoneJS与symfony2一起使用的信息,请查看Multi upload Symfony 2.3 with Dropzone
重复