以PHP格式上传多个文件

时间:2017-01-08 10:04:42

标签: php symfony

我目前正在将单个图像文件一次上传到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 %}

如何修改表单和上传功能,以便我可以选择要上传的所有图像文件?谢谢。

1 个答案:

答案 0 :(得分:1)

我建议您查看DropzoneJS http://www.dropzonejs.com/

这是一个用于处理多个文件上传的javascript前端。它的工作原理是将文件传递给PHP后端进行存储/处理。

编辑 - 添加

如果您需要有关如何将DropzoneJS与symfony2一起使用的信息,请查看Multi upload Symfony 2.3 with Dropzone

此外,这个问题基本上与Problems With Multiple File Upload In Symfony2

重复