发送给用户

时间:2015-12-11 08:51:53

标签: yii2 yii2-advanced-app

我尝试使用此功能向用户发送文件

Yii::$app->response->sendFile($tmp_filename, 'test.RData');

现在我希望在发送后删除该文件。我知道send中有一个名为yii/web/Response的{​​{1}}方法的事件处理程序

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

EVENT_AFTER_SEND

但我的问题是

a)我不确定这是否正确

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

感谢任何帮助!

2 个答案:

答案 0 :(得分:8)

本周我遇到了同样的问题。 documentation表示我们可以使用$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');

答案 1 :(得分:3)

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

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

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