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路;-)谢谢你的提示,我一定会试试的!