一尘不染

用户下载后删除文件

php

我正在使用它向用户发送文件

header('Content-type:  application/zip');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="file.zip"');
readfile($file);

用户下载后我想删除该文件,我该怎么做?

编辑:我的情况是这样的,当用户点击下载按钮时,我的脚本将创建一个临时zip文件,然后用户下载该文件,然后该临时zip文件将被删除。

EDIT2:好的最佳方法似乎是运行一个cron作业,该作业每小时将清理一次临时文件。

EDIT3:我使用来测试了我的脚本unlink,除非用户取消下载,否则它将起作用。如果用户取消下载,则zip文件将保留在服务器上。这样就足够了。:)

EDIT4:哇!connection_aborted()搞定了!

ignore_user_abort(true);
if (connection_aborted()) {
    unlink($f);
}

即使用户取消下载,此文件也将删除文件。


阅读 372

收藏
2020-05-29

共1个答案

一尘不染

unlink($filename);

这将删除文件。

它需要与ignore_user_abort() Docs
结合使用,unlink即使用户取消下载,该 文件
仍然可以执行。

ignore_user_abort(true);

...

unlink($f);
2020-05-29