发送给用户后删除文件
delete file after sending to user
我尝试使用此功能向用户发送文件
Yii::$app->response->sendFile($tmp_filename, 'test.RData');
现在我希望文件在发送后被删除。我知道 yii/web/Response
中的 send
方法有一个名为 EVENT_AFTER_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);
你可能会想创建一个临时文件,所以操作系统会删除它。
我这周遇到了同样的问题。 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');
我尝试使用此功能向用户发送文件
Yii::$app->response->sendFile($tmp_filename, 'test.RData');
现在我希望文件在发送后被删除。我知道 yii/web/Response
中的 send
方法有一个名为 EVENT_AFTER_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);
你可能会想创建一个临时文件,所以操作系统会删除它。
我这周遇到了同样的问题。 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');