如何删除由CGI显示的临时文件(图像)?

2 投票
1 回答
585 浏览
提问于 2025-04-15 11:09

我写了一个Python的CGI脚本,可以把文件转换成.jpg格式,并在一个简单的HTML页面上显示出来。我不想让文件夹里满是这些.jpg文件,所以我用了tempfile.NamedTemporaryFile来创建一个临时文件,用来存放转换后的.jpg文件。现在一切都运行得很好,但我想在页面显示后把这个文件删除。目前我设置了delete=False,但我似乎无法在不导致图片链接失效的情况下删除这个文件。

1 个回答

3

你不能在你的cgi脚本中删除文件。因为在你的脚本运行完之前,html页面是不会发送给用户的。等脚本运行完了,用户的浏览器才会解析这个html,然后去获取jpg文件。

最简单的办法是把临时文件写到一个子目录里,然后定期清理这个目录(只保留最近几分钟的文件)。虽然有一些方法可以改进这个过程,但可能没什么必要。

一个更高级的选项(不过根据你的情况,这也可能没什么意义)是配置你的web服务器,在“获取jpg”请求时运行一个脚本。这样你就可以通过你的脚本来传输jpg文件。这样你就能知道jpg文件什么时候被获取了。在这个脚本中,你可以异步调用一个子脚本来删除jpg文件。

撰写回答