如何处理删除与数据库记录关联的文件?

时间:2014-03-13 10:16:58

标签: database file-upload web cdn

我的Web应用程序允许用户上传图像文件,文件URL作为字段包含在某些数据库记录中。例如,我有一个Post表,其架构如下:

title text topImage tag postTime

这里topImage是用户撰写帖子时上传的图片的网址。 我的问题是: 删除数据库记录时如何正常删除图像文件?例如,删除上述帖子时,不再需要附加到其上的图像。 我想以异步方式执行此操作,因为该文件位于CDN上,我需要调用API来删除它。

我的第一个想法是使用FileRecord表来记录每个上传的文件,在post表中添加一个外键。删除帖子后,将文件记录标记为“要删除”。然后我可以使用后台作业定期清除'影子文件'。

但是这个解决方案有一个问题:我需要记住为每个删除后的场景标记文件记录。如果我有一个PostCollection表,其中包括帖子。删除集合时,会自动删除帖子记录(级联),但我必须手动设置每个要删除的图像文件。因为我的应用程序有许多级别的数据模型,所以这个解决方案真的不是很优雅。

你会做什么?

修改

我最终使用Django的信号:当删除记录时,信号触发我的处理程序处理文件删除,这也适用于级联删除。 但还有另一种情况:当使用新文件更新文件字段时,我还需要删除旧文件。 Django内置信号在这里没有帮助。我可以实现自己的信号,但是现在,我只是手动将旧文件标记为删除。

0 个答案:

没有答案