我们在发布内容时,通过编辑器上传图片等文件,中途可能发现传错了,或者临时有事,内容不提交了,但是那些文件已经上传了,而且没有使用起来,也就是成了垃圾文件,当然我在做程序的时候,已经将上传的文件信息,包括名称、地址等已经记录到数据表中,我的想法是定期清理那些没有绑定内容ID的文件。大家还有什么解决方案?

解决方案 »

  1.   


    我的附件表中设置了 模块 和 内容ID两个字段,任何上传的附件都会插入一条记录,内容上传后,根据内容中的文件地址,更新刚才的附件表字段,设置内容ID
      

  2.   

    像cnblog那种写博客会定时自动保存,起码需要第一次ajax自动保存提交到数据库里以便记录下这个博文的ID,
    AJAX会返回一个文章id被append到表单里,下一次ajax或者主动提交就知道附件属于哪个文章了,也就是说一旦提交过附件,这篇博文就属于作者的一篇草稿了,去草稿箱就应该可以看到。 即便浏览器关闭JS了,自然就不会有自动保存了,也不会有附件上传功能了,只有个普通提交按钮,是平稳退化的。也就是,我认为任何附件上传的前提是这篇文章已经被入库,附件都归属于这个文章ID。如果你的应用就是非要单独上传附件,恐怕服务端也很难编程来记录这个附件属于谁吧。
    除非上传附件入库或者入文件系统,把路径记录在SESSION里,并在真正提交博文的时候建立最终的关联,那的确需要定时清理那些没有被关联的附件了,无论它们是被记录在数据库里还是文件系统里。
      

  3.   

    先获取所有的在发布的内容中使用的文件名保存数组$arr,再遍历你保存上传文件的文件夹中的文件,以该文件的文件名是否存在于$arr,如果不存在就删除。