文件" prueba.jpeg"因未知错误而未上传

时间:2017-10-17 22:51:31

标签: php symfony vichuploaderbundle

我已在管理员中正确设置了上传图片,但我遵循了以下文档:https://symfony.com/doc/current/bundles/EasyAdminBundle/integration/vichuploaderbundle.html

现在在不使用EasyAdminBundle的系统的另一部分我需要上传图像,在控制器中我有这个:

public function crearequiposAction(Request $request) {
    $equipo = new Equipos();
    $form = $this->createForm(EquiposType::class, $equipo);

    $form->handleRequest($request);

    if ($form->isSubmitted()) {
        if ($form->isValid()) {

            $em = $this->getDoctrine()->getManager();
            $fecha=new \DateTime('now');

            $ruta = $equipo->getImageFile();
            $nombrep = $equipo->getLogo();
            $nombre = $nombrep.'.'.$ruta->guessExtension();

            $fileDir = $this->container->getParameter('kernel.root_dir').'/../web/uploads/images/equipos';

            $ruta->move(
                $fileDir,
                $nombre
            );


            $equipo->setLogo($nombre);
            $equipo->setUpdatedAt($fecha);


            $em->persist($equipo);
            $flush = $em->flush();

                if ($flush == null) {
                    $status = "Documento registrado correctamente";

                    $this->session->getFlashBag()->add("status", $status);
                    return $this->redirectToRoute("listado-torneos");

                } else {
                    $status = "No se registro equipo";
                }

        } else {
            $status = "No se registro equipo";
        }

        $this->session->getFlashBag()->add("status", $status);
    }

    return $this->render('AppBundle:Equipos:informacionequipos.html.twig', array(
                "form" => $form->createView()
    ));

 }

图片上传正确,但它显示了以下错误:

  

文件" prueba.jpeg"因未知错误而未上传。

introducir la descripción de la imagen aquí

我不知道如何解决这个问题,任何想法?

问候

1 个答案:

答案 0 :(得分:1)

这是解决方案,问题分为两部分。

首先在表单中需要将表单更改为:

use Vich\UploaderBundle\Form\Type\VichFileType;
use Symfony\Component\HttpFoundation\File\File;

$builder
          ->add('nombre')
          ->add('grupo')
          ->add('numero')
          ->add('imageFile', VichFileType::class)
          ->add('torneos')
          ->add('save', SubmitType::class, array(
                     "attr" => array(
                     "class" => "save"
                )));

第二个更改是在控制器中,当使用捆绑包时,不再需要使用移动,仅在本地上载图像时使用

这是控制器的代码:

public function crearequiposAction(Request $request) {
        $equipo = new Equipos();
        $form = $this->createForm(EquiposType::class, $equipo);

        $form->handleRequest($request);

        if ($form->isSubmitted()) {
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($equipo);
                $flush = $em->flush();
                    if ($flush == null) {
                        $status = "Equipo registrado correctamente";
                        $this->session->getFlashBag()->add("status", $status);
                        return $this->redirectToRoute("listado-torneos");
                    } else {
                        $status = "No se registro equipo";
                    }
            } else {
                $status = "No se registro equipo";
            }
            $this->session->getFlashBag()->add("status", $status);
        }
        return $this->render('AppBundle:Equipos:informacionequipos.html.twig', array(
                    "form" => $form->createView()
        ));
  }

此致