我已在管理员中正确设置了上传图片,但我遵循了以下文档: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"因未知错误而未上传。
我不知道如何解决这个问题,任何想法?
问候
答案 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()
));
}
此致