我正在开发一个Symfony应用程序,用户可以使用它来裁剪图像.有人下载了裁剪后的图像,我希望应用程序将其从服务器中删除.
我目前有这个控制器动作:
/**
* @Route(
* "/download/{crop_id}",
* name="download_cropped",
* options={"expose"=true}
* )
*
* @ParamConverter(
* "crop",
* class="WebwijsCropperBundle:Crop",
* options={"id" = "crop_id"}
* )
*
*/
public function downloadAction(Crop $crop)
{
$dir = $this->container->getParameter('image.cropped.dir');
return new BinaryFileResponse($dir . '/' . $crop->getCroppedFile());
}
Run Code Online (Sandbox Code Playgroud)
我创建了这个EventListener,我想在发送响应后删除图像.每次响应后都会触发此监听器.
因此,如果响应来自正确的控制器操作,如何获取我需要知道的信息.我怎样才能获得crop_id参数,以便知道要删除哪个文件?
class FileRemovalListener
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function onKernelTerminate(PostResponseEvent $event)
{
$response = $event->getResponse();
$request = $event->getRequest();
// what do i have to do here to know
// from which controller action the response comes?
}
}
Run Code Online (Sandbox Code Playgroud)
这是services.yml中的服务定义
WebwijsCropperBundle\EventListener\FileRemovalListener:
tags:
- { name: kernel.event_listener, event: kernel.terminate, method: onKernelTerminate }
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您只想删除该文件,请尝试以下操作:
public function downloadAction(Crop $crop)
{
$dir = $this->container->getParameter('image.cropped.dir');
$response = new BinaryFileResponse($dir . '/' . $crop->getCroppedFile());
$response->deleteFileAfterSend(true);
return $response;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |