私はユーザーが画像をトリミングできるSymfonyアプリケーションに取り組んでいます。誰かが切り取った画像をダウンロードした後、私はアプリケーションがそれをサーバーから取り除きたい。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());
}
私は応答が送られた後の画像を削除したいこのイベントリスナーを作成しました。このリスナーはすべての応答の後にトリガーされます。
したがって、応答が正しいコントローラ操作から得られたかどうかを知るために必要な情報はどのように取得しますか。そして、どのファイルを削除するかを知るために、どのように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?
}
}
あなただけのファイルを削除する場合これは、このしようと、services.yml
WebwijsCropperBundle\EventListener\FileRemovalListener:
tags:
- { name: kernel.event_listener, event: kernel.terminate, method: onKernelTerminate }
新しいdeleteActionを作成します。ユーザーは、ダウンロードボタンをクリックした場合、あなたはdeleteAction' 'のいくつかの種類にAJAX呼び出しを送信 、あなたはあなたが与えるID または を転送:そのdeleteActionにリダイレクトルートを定義 –
をダウンロードした後、私のようなものとなるだろうすべてのクロップされた画像の画像に生涯を費やし、15分ごとに期限切れになった画像やそのようなものをすべて削除するcronジョブがあります。 – kunicmarko20