Yii2 发送给用户后删除文件

Yii2 发送给用户后删除文件,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,我尝试使用此函数向用户发送文件 Yii::$app->response->sendFile($tmp_filename, 'test.RData'); 现在我想在发送后删除该文件。我知道在yii/web/Response中有一个send方法的事件处理程序,叫做event\u-AFTER\u-send 我尝试使用以下代码访问此处理程序: Event::on(\yii\web\Response::className(), \yii\web\Response::EVENT_AFTER_S

我尝试使用此函数向用户发送文件

Yii::$app->response->sendFile($tmp_filename, 'test.RData');
现在我想在发送后删除该文件。我知道在
yii/web/Response
中有一个
send
方法的事件处理程序,叫做
event\u-AFTER\u-send

我尝试使用以下代码访问此处理程序:

Event::on(\yii\web\Response::className(), \yii\web\Response::EVENT_AFTER_SEND, function ($event) {
          unlink($event->response->filename);  
});
但我的问题是

a) 我不确定这是不是正确的方法

b) 如何访问事件中的文件名


感谢您的帮助

如果您立即发送文件,您可以

header('....');
echo file_get_contents(path/of/file)
unlink(path/of/file);

您可以考虑创建一个临时文件,以便操作系统将其删除。

本周我遇到了同样的问题。说明我们可以使用
$data
参数在这个回调中添加我们想要的任何变量。以下是一个例子:

Yii::$app->response->sendFile('/path/of/my/temp/file')->on(\yii\web\Response::EVENT_AFTER_SEND, function($event) {
    unlink($event->data);
}, '/path/of/my/temp/file');

谢谢你的回答!这是我的b计划。我想我可以走yii路;-)谢谢你的提示,我一定会试试的!