在CMS中,经常会用到附件,例如图片,文件,多媒体等
请问用户在文章里上传的文件没有用到或者最后未保存该文章,该如何识别附件的有效性?
稍微繁琐一点,但可靠的方法:
内容编辑过程中,将附件保存在临时目录中。
当编辑提交后,将临时目录中的附件发布到正式目录中(需要改写内容中的路径),然后定期清理临时目录中的旧(比如修改时间为3天前)文件。
fileid(附件id) filename path(目录) id(附件所在的文章id) cjid(文件临时编号)
1001 test.jpg /xxx/xxx/ 1392982268 1392982268
在文章发表页面上传附件时,会将附件记录到数据库,因为文章还没发布没有文章id,所以附件表里的 id=cjid=上传时的unix时间戳
当文章发表时,才会再将附件的 id更新为文章id,cjid更新为0.
1001 test.jpg /xxx/xxx/ 1 0
在清理冗余附件时的判断条件是这样的
//清理信息附件 DelFileAllTable("cjid<>0 and (id=0 or cjid=id)");
上传附件的时候把附件信息入库,附件关联文章id,定期清理附件,如果文章id不存在或者为空,就删除该附件。
这样在删除文章的时候,也就可以删除该文章id下的所有附件。
稍微繁琐一点,但可靠的方法:
内容编辑过程中,将附件保存在临时目录中。
当编辑提交后,将临时目录中的附件发布到正式目录中(需要改写内容中的路径),然后定期清理临时目录中的旧(比如修改时间为3天前)文件。
附件表
fileid(附件id) filename path(目录) id(附件所在的文章id) cjid(文件临时编号)
1001 test.jpg /xxx/xxx/ 1392982268 1392982268
在文章发表页面上传附件时,会将附件记录到数据库,因为文章还没发布没有文章id,所以附件表里的 id=cjid=上传时的unix时间戳
当文章发表时,才会再将附件的 id更新为文章id,cjid更新为0.
fileid(附件id) filename path(目录) id(附件所在的文章id) cjid(文件临时编号)
1001 test.jpg /xxx/xxx/ 1 0
在清理冗余附件时的判断条件是这样的
//清理信息附件
DelFileAllTable("cjid<>0 and (id=0 or cjid=id)");
上传附件的时候把附件信息入库,附件关联文章id,定期清理附件,如果文章id不存在或者为空,就删除该附件。
这样在删除文章的时候,也就可以删除该文章id下的所有附件。