现在ASP网页在上传图片时大部分都是用无组件上传,把图片上传到一个文件夹,然后把路径保存到数据库一个字段中,那么在删除记录时只是把相应的数据库记录删除掉了,相关的图片还会保留在服务器的文件下,会有好多无用的图片占用着空间,想删除记录时把相关图片也删掉怎么办?以下代码可以实现,但必须服务器得支持FSO组件(大多数服务器都可用)
删除图片函数,当然也可以删除其它文件了
<% Function DeleteFile(FileName) FileName=server.MapPath(FileName) '必须转换成绝对路径的 dim Fso Set Fso = CreateObject("scripting.filesystemobject") if Fso.FileExists(Filename) then '判断文件是否存在 Fso.DeleteFile filename end if Set Fso = nothing End Function %>
比如说:你的数据库中news表字段PIC存放着图片路径,删除时不要用直接的删除sql语句了,那样无法获取PIC值
<% id=request("id") set rs=server.createobject("adodb.recordset") sql="select * from news where id="&id rs.open sql,conn,1,3 DeleteFile(rs("pic")) rs.delete rs.update rs.close set rs=nothing %>
如果批量删除记录可以做循环调用DeleteFile函数
<% id=request("id") set rs=server.createobject("adodb.recordset") sql="select * from news where id in('"&id&"')'不止一个ID rs.open sql,conn,1,3 do while not rs.eof DelFile(rs("pic")) rs.delete rs.movenext loop rs.update rs.close set rs=nothing %>
本删除适合表中PIC字段只存放一张图片的情况下删除文章同时删除图片,如果多个字段中存放图片,可以在DelFile(rs("pic"))接着加DelFile(rs("pic1")),DelFile(rs("pic2"))。 |