首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > ASP >

Asp删除无效文件,小弟我的代码错在哪了?请大侠帮忙

2013-01-19 
Asp删除无效文件,我的代码错在哪了?请大侠帮忙本帖最后由 xyciw 于 2012-12-21 15:32:56 编辑%@LANGUAGE

Asp删除无效文件,我的代码错在哪了?请大侠帮忙
本帖最后由 xyciw 于 2012-12-21 15:32:56 编辑

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="conn.asp"-->

<% 

'文件删除函数 
function deletefile(filename) 
if filename<>"" then 
  set fs1=server.CreateObject("scripting.filesystemobject") 
  if fs1.FileExists(filename) then 
   fs1.DeleteFile filename 
  end if 
  set fs1=nothing 
end if      
end function 




function searchfile(fname) 
'查找sys_about表
sql1="SELECT body from sys_about "
set rs1=server.createobject("adodb.recordset")
rs1.open sql1,conn,1,1
if not rs1.eof then 
do while not rs1.eof 

if instr(rs1("body"),fname)>0 then
return true
exit do
exit function
    end if

rs1.movenext
loop
end if
rs1.close
set rs1=nothing

'查找sys_news表
sql2="SELECT body,picurl from sys_news "
set rs2=server.createobject("adodb.recordset")
rs2.open sql2,conn,1,1
if not rs2.eof then 
do while not rs2.eof

if instr(rs2("body"),fname)>0 then
return true
exit do
exit function
end if
if instr(rs2("picurl"),fname)>0 then
return true
exit do
exit function
    end if
rs2.movenext
loop

end if
rs2.close
set rs2=nothing

end function


    function bianli(path) 
        dim fso            'fso对象 
        dim objFolder      '文件夹对象 
        dim objFiles       '文件集合 
        dim objFile        '文件对象 
set fso=Server.CreateObject("Scripting.FileSystemObject")
   
        on error resume next 
        set objFolder=fso.GetFolder(path)'创建文件夹对象 
     
            set objFiles=objFolder.Files 
            for each objFile in objFiles 

if searchfile(objFile.name)=false then
    Response.Write (Server.MapPath("\UploadFile"+ objFile.name)&"<br>") 
deletefile(Server.MapPath("\UploadFile"+ objFile.name)) 
end if

            next 
 
        set objFolder=nothing 
        set objSubFolders=nothing 
        set fso=nothing 
    end function 
%> 
<% 


   bianli(Server.MapPath("/")+"\UploadFile") '调用bianli()函数,这里是遍历当前目录下的图片文件
%>
<%conn.close
set conn=nothing
%>


以上的代码是我用来判断上传的图片是否无效或者过期的,但运行发现,不管是否有效,目录下所有的文件都给删除了,一直找不到原因,bianli()函数指定目录,判断目录下的所有文件是否在 数据表中出现,如果出现,就不删除,如果都没有就删除,在线等修正完整代码... 
以前有相关帖子但是无最终解决方案,大神金口一开   天下普民尽欢颜!
[解决办法]
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Option Explicit
Response.CodePage=65001
Response.Charset="UTF-8"
Response.Buffer = True 
Response.ExpiresAbsolute = Now() - 1 
Response.Expires = 0 
Dim fso,arr,sql,rs,i,arrpath,i_Total
If Request.QueryString("action")="dell" Then
set fso=Server.CreateObject("Scripting.FileSystemObject")
i_Total=cInt(Request.Form("id").count)
For i=1 To i_Total
arrpath=Server.MapPath("")&Request.Form("id")(i)
If fso.FileExists(arrpath) Then
fso.DeleteFile arrpath, True
Response.write "成功删除:"&arrpath&"<br/>"
End If
Next
set fso=Nothing
Response.End
End If
On Error Resume Next
Dim Db,ConnStr,Conn
'数据库地址设置,根据相应情况作更改,名称越复杂越好。
Db="/%$#&.mdb"
ConnStr="Provider=Microsoft.Jet.OleDb.4.0;Data Source="&Server.MapPath("/")&Db
Set Conn = Server.Createobject("adodb.connection")
Conn.open ConnStr
If Err Then
Err.Clear
Conn.Close:Set Conn=Nothing
Response.Write " 数据库连接出错,请检查连接字串。"
Response.End
End If
on error goto 0
'===先取出所有图片地址存储
Sub get_pic()
Response.write "所有图片地址:<textarea id='pics' style='width:100%;height:300px'>"

'查找【关于我们】的表
sql="SELECT content from ciw_about"
set Rs=server.createobject("adodb.recordset")
Rs.open sql,conn,1,1
do while not Rs.eof
Response.write get_src(Rs(0))
Rs.movenext
loop
Rs.close
set Rs=nothing

arr=split("news
[解决办法]
article
[解决办法]
pic
[解决办法]
soft
[解决办法]
flv","
[解决办法]
")
for i=0 to ubound(arr)
sql="SELECT pic_url,content from ciw_"&arr(i)
set Rs=server.createobject("adodb.recordset")
Rs.open sql,conn,1,1
do while not Rs.eof
Response.write get_src(Rs(1))
if Rs(0)<>"" then Response.write "
[解决办法]
"&Rs(0)
Rs.movenext
loop
Rs.close
set Rs=nothing
next
Response.write "</textarea>"
End Sub

Sub subfolder(path)
Dim objFolders,objFiles,folder
set fso=Server.CreateObject("Scripting.FileSystemObject")
Set objFolders=fso.GetFolder(path)
For Each folder In objFolders.SubFolders
Response.write "<div>"&folder&" All file:</div>"
Call subfolder(folder)
Next
For Each objFiles In objFolders.Files


arrpath="\Upfile"&Split(objFiles,"Upfile")(1)
Response.write "<input type='checkbox' name='id' value='"&arrpath&"' /> "&arrpath&"<br/>"
Next
set fso=nothing
End Sub

Function get_src(strng) 
Dim regEx, Match, Matches,s_str
Set regEx = New RegExp
regEx.Pattern = " src=[""']?(.*?)[""' ]"
regEx.IgnoreCase = True
regEx.Global = True
Set Matches = regEx.Execute(strng)
For Each Match in Matches ' 遍历 Matches 集合。
s_str=s_str&"
[解决办法]
"&regEx.Replace(Match.Value, "$1")
Next
get_src=s_str
End Function

Call get_pic() '===先取出所有图片地址存储
Response.write "<form action=""?action=dell"" method=""POST"" onsubmit=""return fun()"">"
Call subfolder(Server.MapPath("\Upfile")) '===取出指定目录下所有图片地址
Response.write "<input type=""submit"" value=""提交""></form>"
Conn.Close:Set Conn=Nothing
%>
<script type="text/javascript">
var pics=document.getElementById("pics").value.toLowerCase();
var input=document.getElementsByTagName("input");
    for(var i= 0,l=input.length;i<l;i++){
        if(pics.indexOf(input[i].value.toLowerCase())!=-1){
            input[i].disabled=true;
        }else{
            input[i].checked=true;
        }
    }
function fun(){
        if(confirm("确定要删除选择的文件?注意删除后不可恢复!")){
            return true;
        }else{
            return false;
        }
    }
</script>

热点排行