php - 用户下载后删除文件

标签 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);
}

即使用户取消下载,这个文件也会被删除。

最佳答案

unlink($filename);

这将删除文件。

需要结合ignore_user_abort()Docs这样即使用户取消下载,unlink 仍然会执行。

ignore_user_abort(true);

...

unlink($f);

关于php - 用户下载后删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2641667/

相关文章:

php - php 变量中的斜杠在 javascript 中未正确解析

php - PHP/MySQL并行插入的正确处理

php - 如何仅选择 friend 和查看用户的帖子

php - 如何处理 MVC 网站中查看特定的 Javascript

php - SQL Server 和 WAMP Server 冲突吗?我需要使用不同的端口吗?

php - 当表行单击 jquery 时突出显示表行并选择单选输入

php - Laravel - 使用 Eloquent 在数据透视表上进行多对多

javascript - 将大型 PHP 数组传递给 Javascript

javascript - 客户端和服务器端编程有什么区别?

php - PHP 中颜色之间的 "Distance"