Symfony 删除使用文件系统上传的图像
Symfony Delete image uploaded with filesystem
我想使用文件系统从我的 / uploads 文件夹中删除一张图片,但我做不到。这是我的代码。
非常感谢!
/**
* Permet de supprimer des images
*
* @Route("/delete/image/{id}", name="image_delete", methods={"DELETE"})
*
* @param Image $image
* @param EntityManagerInterface $manager
* @return Response
*/
public function deleteImage(Image $image, EntityManagerInterface $manager)
{
/**
* Je gère la suppression du dossier "uploads" ou l'image est stockée
*/
//Je récupère le nom de l'image
$filename = $image->getName();
// Je crée une instance de kla classe fileSystem
$fileSystem = new Filesystem();
//Je supprime l'image du dossier
$fileSystem->remove('%kernel.project_dir%/public/uploads/'.$filename);
/**
* Je gère la suppression en bdd
*/
$manager->remove($image);
$manager->flush();
return new Response('deleted', Response::HTTP_OK);
}
这里的问题是你传递的路径抛出方法:
$fileSystem->remove('%kernel.project_dir%/public/uploads/'.$filename);
%kernel.project_dir%
在此位置不起作用,因为 Filesystem
class 无法访问内核配置。你必须先像这样得到它:
$projectDir = $this->getParameter('kernel.project_dir');
$fileSystem->remove($projectDir.'/public/uploads/'.$filename);
我想使用文件系统从我的 / uploads 文件夹中删除一张图片,但我做不到。这是我的代码。 非常感谢!
/**
* Permet de supprimer des images
*
* @Route("/delete/image/{id}", name="image_delete", methods={"DELETE"})
*
* @param Image $image
* @param EntityManagerInterface $manager
* @return Response
*/
public function deleteImage(Image $image, EntityManagerInterface $manager)
{
/**
* Je gère la suppression du dossier "uploads" ou l'image est stockée
*/
//Je récupère le nom de l'image
$filename = $image->getName();
// Je crée une instance de kla classe fileSystem
$fileSystem = new Filesystem();
//Je supprime l'image du dossier
$fileSystem->remove('%kernel.project_dir%/public/uploads/'.$filename);
/**
* Je gère la suppression en bdd
*/
$manager->remove($image);
$manager->flush();
return new Response('deleted', Response::HTTP_OK);
}
这里的问题是你传递的路径抛出方法:
$fileSystem->remove('%kernel.project_dir%/public/uploads/'.$filename);
%kernel.project_dir%
在此位置不起作用,因为 Filesystem
class 无法访问内核配置。你必须先像这样得到它:
$projectDir = $this->getParameter('kernel.project_dir');
$fileSystem->remove($projectDir.'/public/uploads/'.$filename);