我需要在上传时调整图片大小,并且无法真正找到解决方法。 我没有使用任何捆绑包,我遵循了symfony文档中的UploadFile示例。
这是有效的,复制右侧文件夹中的图像但我需要以某种方式调整它的大小。 如果可能的话,我需要一些方法来做它而不添加包。
这是服务(就像在文档中一样):
class ImgUpload
{
private $targetDir;
public function __construct($targetDir)
{
$this->targetDir = $targetDir;
}
public function upload(UploadedFile $file)
{
$file_name = $file->getClientOriginalName();
empty($file_name) ? $file_name = md5(uniqid()).'.'.$file->guessExtension() : $file_name = $file->getClientOriginalName();
$file->move($this->targetDir, $file_name);
return $file_name;
}
}
这是在我的控制器中:
/**
* @Route("admin/import_images", name="import_images")
*/
public function importImgAction(Request $request)
{
$form = $this->createForm(ImportImgType::class, NULL);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$paths = $form->get('path')->getData();
foreach($paths as $path) {
$this->get('app.img_upload')->upload($path);
}
return $this->redirect($this->generateUrl('product_list'));
}
return $this->render('AppBundle:productmanager:import_images.html.twig', array(
'form' => $form->createView(),
));
}
提前谢谢!
答案 0 :(得分:0)
我使用实体监听器来监听您使用ImportImgType更新的实体的持久性和更新,如果有新图像,则调整大小。
app.entity_listener.resize_img:
class: AppBundle\ResizeImgListener
tags:
- { name: doctrine.orm.entity_listener, entity: AppBundle\Entity\ImportImg, event: postUpdate }
- { name: doctrine.orm.entity_listener, entity: AppBundle\Entity\ImportImg, event: postPersist }
有关实体侦听器的更多详细信息:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#entity-listeners-class