Sar*_*est 3 yii2 yii2-advanced-app
我尝试使用此功能向用户发送文件
Yii::$app->response->sendFile($tmp_filename, 'test.RData');
Run Code Online (Sandbox Code Playgroud)
现在我希望在发送后删除该文件.我知道send在yii/web/Response被调用的方法中有一个事件处理程序EVENT_AFTER_SEND
我尝试使用以下代码访问此处理程序:
Event::on(\yii\web\Response::className(), \yii\web\Response::EVENT_AFTER_SEND, function ($event) {
unlink($event->response->filename);
});
Run Code Online (Sandbox Code Playgroud)
但我的问题是
a)我不确定这是不是正确的方法
b)如何访问事件内的文件名
任何帮助表示赞赏!
Cly*_*yff 10
本周我遇到了同样的问题.该文件说,我们可以使用$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');
Run Code Online (Sandbox Code Playgroud)
如果您立即发送文件,您可以
header('....');
echo file_get_contents(path/of/file)
unlink(path/of/file);
Run Code Online (Sandbox Code Playgroud)
您可以考虑创建一个临时文件,以便操作系统将其删除。
| 归档时间: |
|
| 查看次数: |
1195 次 |
| 最近记录: |