【问题标题】:The file "prueba.jpeg" was not uploaded due to an unknown error由于未知错误,未上传文件“prueba.jpeg”
【发布时间】:2017-10-17 22:51:31
【问题描述】:

我已在管理员中正确设置上传图片,并遵循此文档: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”未上传。

我不知道如何解决这个问题,有什么想法吗?

问候

【问题讨论】:

    标签: php symfony vichuploaderbundle


    【解决方案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"
                    )));
    

    第二个变化是在控制器中,使用bundle时不再需要使用move,仅在原生上传图片时使用

    这是控制器的代码:

    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()
            ));
      }
    

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多