asp怎样清除数据库ACCESS中没有记录的图片
acc表中字段pic记录有这样的数据:2009-02/123456.jpg而我本地的文件夹地址是/upfile/2009-02/123456.jpg我想找出有pic字段表...
acc表中字段pic记录有这样的数据:2009-02/123456.jpg
而我本地的文件夹地址是/upfile/2009-02/123456.jpg
我想找出有pic字段表中没有记录的但文件存在本地的垃圾图片及其它类型的文件并选择性的把他们删除掉
各位高手能否帮个忙写个代码。250分,全给,不要随便在网上找一个的代码啊,我找了很多,不适用. 展开
而我本地的文件夹地址是/upfile/2009-02/123456.jpg
我想找出有pic字段表中没有记录的但文件存在本地的垃圾图片及其它类型的文件并选择性的把他们删除掉
各位高手能否帮个忙写个代码。250分,全给,不要随便在网上找一个的代码啊,我找了很多,不适用. 展开
4个回答
展开全部
该代码已调试通过,要注意你必须有upload路径的写入权限
<%
'连接数据库,读取图片路径,数据库名:notes.mdb,表名:table1,改成你自己的
Dim conn,connstr,rs,sql
Set conn=server.createobject("ADODB.Connection")
connstr="provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("notes.mdb")
conn.Open connstr
set rs=server.CreateObject("adodb.recordset")
sql="select Pic from table1"
rs.open sql,conn,1,1
'读取/upfile文件夹下的所有文件名
Dim objFSO,objFolder,objFile,FF
FF = Server.MapPath("upfile/")
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(ff) Then
Set objFolder = objFSO.GetFolder(ff)
'遍历upfile/下的所有文件夹
For Each subFolder in objFolder.SubFolders
'遍历所有文件
For Each objFile in subFolder.Files
'去除部分路径
strFile=replace(right(objFile,len(objFile)-instr(objFile,"\upfile\")-7),"\","/")
Response.Write(strFile)
rs.filter="Pic='"&strFile&"'"
if rs.eof then
'文件在数据库中没有找到,直接删除。
'如果需要先显示确认后再删除,在这里把需要删除的文件加入一个数组,后再做操作。
filename=objFile.name
objFile.Delete
Response.Write(filename&"已删除<br />")
end if
Next
Next
Else
Response.Write "文件夹"&ff&"不存在,无法读取相关信息!"
End If
Set objFolder = Nothing
Set objFSO = Nothing
rs.Close
Set rs = nothing
%>
<%
'连接数据库,读取图片路径,数据库名:notes.mdb,表名:table1,改成你自己的
Dim conn,connstr,rs,sql
Set conn=server.createobject("ADODB.Connection")
connstr="provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("notes.mdb")
conn.Open connstr
set rs=server.CreateObject("adodb.recordset")
sql="select Pic from table1"
rs.open sql,conn,1,1
'读取/upfile文件夹下的所有文件名
Dim objFSO,objFolder,objFile,FF
FF = Server.MapPath("upfile/")
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(ff) Then
Set objFolder = objFSO.GetFolder(ff)
'遍历upfile/下的所有文件夹
For Each subFolder in objFolder.SubFolders
'遍历所有文件
For Each objFile in subFolder.Files
'去除部分路径
strFile=replace(right(objFile,len(objFile)-instr(objFile,"\upfile\")-7),"\","/")
Response.Write(strFile)
rs.filter="Pic='"&strFile&"'"
if rs.eof then
'文件在数据库中没有找到,直接删除。
'如果需要先显示确认后再删除,在这里把需要删除的文件加入一个数组,后再做操作。
filename=objFile.name
objFile.Delete
Response.Write(filename&"已删除<br />")
end if
Next
Next
Else
Response.Write "文件夹"&ff&"不存在,无法读取相关信息!"
End If
Set objFolder = Nothing
Set objFSO = Nothing
rs.Close
Set rs = nothing
%>
展开全部
唉,也是做网站的。
2009-02/123456.jpg
upfile/2009-02/123456.jpg
这两个你可以通过更改上传路径来改变数据库中的数据结构。
我想找出有pic字段表中没有记录的但文件存在本地的垃圾图片及其它类型的文件并选择性的把他们删除掉
数据不多的话,对照着数据库中的记录来做删除。
利用fso对数据库中记录的图片进行排除,利用fso删除图片的代码N多
你那250自己留着吧
2009-02/123456.jpg
upfile/2009-02/123456.jpg
这两个你可以通过更改上传路径来改变数据库中的数据结构。
我想找出有pic字段表中没有记录的但文件存在本地的垃圾图片及其它类型的文件并选择性的把他们删除掉
数据不多的话,对照着数据库中的记录来做删除。
利用fso对数据库中记录的图片进行排除,利用fso删除图片的代码N多
你那250自己留着吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
自己写写吧 ,嵌套循环就能搞定,先循环所有图片 再循环数据比较 内循环一次 没有就删除
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是我根据你的要求,粗略地写一下,大概步骤是这些流程,用到的函数和对象是这样了,我没有调试过,你自己琢磨一下修改就可以用了,记得放到ASP文件里哦!
<script language=javascript runat=server>
//记得改成你数据库名
cntStr="provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123;Data Source={svrpath}\Mydb.mdb";
cntStr=cntStr.replace("{svrpath}" , Server.MapPath("\\") );
var fso = new ActiveXObject("Scripting.FileSystemObject");
var conn=new ActiveXObject("ADODB.Connection");
var rs=new ActiveXObject("ADODB.Recordset");
conn.open(cntStr);
imgForder=Server.MapPath("\\") + "\\upfile\\2009-02" ;
f = fso.GetFolder(imgForder);
fc = new Enumerator(f.files);
for (; !fc.atEnd(); fc.moveNext())
{
var fileName = String( fc.item() );
fileName = fileName.substring( fileName.lastIndexOf("\\")+1 );
sqlcmd = "select count(*) from table where pic like '" + fileName + "'";
rs = conn.execute(sqlcmd );
if( !rs.BOF )
{
rs.MoveFirst();
if( parseInt( rs.Fields.Item(0) )==0 ) //以文件名为查找条件,如果数据库存在该文件名,则保留,数据库不存在,则删除?
{
fso.DeleteFile( fc.item() , true);
Response.Write( "已删除文件:" + fc.item() );
}
else
{
Response.Write( "保留文件:" + fc.item() );
}
}
rs.close();
}
</script>
<script language=javascript runat=server>
//记得改成你数据库名
cntStr="provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=123;Data Source={svrpath}\Mydb.mdb";
cntStr=cntStr.replace("{svrpath}" , Server.MapPath("\\") );
var fso = new ActiveXObject("Scripting.FileSystemObject");
var conn=new ActiveXObject("ADODB.Connection");
var rs=new ActiveXObject("ADODB.Recordset");
conn.open(cntStr);
imgForder=Server.MapPath("\\") + "\\upfile\\2009-02" ;
f = fso.GetFolder(imgForder);
fc = new Enumerator(f.files);
for (; !fc.atEnd(); fc.moveNext())
{
var fileName = String( fc.item() );
fileName = fileName.substring( fileName.lastIndexOf("\\")+1 );
sqlcmd = "select count(*) from table where pic like '" + fileName + "'";
rs = conn.execute(sqlcmd );
if( !rs.BOF )
{
rs.MoveFirst();
if( parseInt( rs.Fields.Item(0) )==0 ) //以文件名为查找条件,如果数据库存在该文件名,则保留,数据库不存在,则删除?
{
fso.DeleteFile( fc.item() , true);
Response.Write( "已删除文件:" + fc.item() );
}
else
{
Response.Write( "保留文件:" + fc.item() );
}
}
rs.close();
}
</script>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询