现在功能放在一个htm网页中,先选择条件,再在要上传的文件夹中选择一个文件,然后程序会列出所有符合条件的文件.使用之前,就改进form的action.
改进:支持中文路径的方法
代码:uploadform.htm
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <meta name="Keywords" content="51windows.Net"> <meta name="Author" content="haiwa"> <title>Upload many file - 51windows.Net</title> <style> *{font:menu} input{font-size:12px;} .checkbox{} .showdiv{padding-left:40px;} </style> </head> <body> 请选择要上传的条件的过滤条件:<br> <input onclick="document.all.strdiv.style.display=(this.checked?'':'none')" type="checkbox" class="checkbox" name="checkstr" id="checkstr" value="1"> <label for="checkstr">文件名</label><br> <div class="showdiv" id="strdiv" style="display:none;"><select name="filestrconditions" xonchange="alert(this.options[this.selectedIndex].value)"> <option value="1">包含</option> <option value="0">不包含</option> </select> <input type="text" size="8" name="filestrstr" value=""> <input type="checkbox" class="checkbox" name="checkstrinstart" id="checkstrinstart" value="1"> <label for="checkstrinstart">文件名开头</label> <br><input type="checkbox" class="checkbox" name="checkstrcase" id="checkstrcase" value="1"> <label for="checkstrcase">区分大小写</label> <!-- <br><input type="checkbox" class="checkbox" name="checkreg" id="checkreg" value="1"> <label for="checkreg">使用正则表达式</label> --></div> <div><input onclick="document.all.sizediv.style.display=(this.checked?'':'none')" type="checkbox" class="checkbox" name="checksize" id="checksize" value="1"> <label for="checksize">大小</label></div> <div class="showdiv" id="sizediv" style="display:none;"><select name="filesizeconditions" xonchange="alert(this.options[this.selectedIndex].value)"> <option value="1">至多</option> <option value="0">至少</option> </select> <input type="text" size="8" id="filesizelimit" value="100" style="text-align:right"> K </div> <div><input onclick="document.all.typediv.style.display=(this.checked?'':'none')" type="checkbox" class="checkbox" name="checktype" id="checktype" value="1"> <label for="checktype">类型</label></div> <div class="showdiv" id="typediv" style="display:none;"><select name="fileextconditions" xonchange="alert(this.options[this.selectedIndex].value)"> <option value="1">选择所选类型</option> <option value="0">排除所选类型</option> </select><br> <SCRIPT LANGUAGE="JavaScript"> <!-- allextstr = "gif,bmp,jpg,png<br>,js,css,html,htm,asp,aspx,java<br>,mp3,avi,rm,ram,mid,wmv<br>,doc,xls,ppt,eml,txt,pdf,chm<br>,rar,zip,exe,reg" extarr = allextstr.split(",") for (var l = 0;l<extarr.length;l++) { document.write('<label for="ft'+l+'"><input onclick="selectfiletype()" type="checkbox" class="checkbox" name="ft" id="ft'+l+'" value="'+extarr[l]+'">.'+extarr[l]+'</label>') } //--> </SCRIPT> <input type="hidden" name="allselectfileeext"> </div> <div><input onclick="document.all.datediv.style.display=(this.checked?'':'none')" type="checkbox" class="checkbox" name="checkdate" id="checkdate" value="1"> <label for="checkdate">日期</label></div> <div class="showdiv" id="datediv" style="display:none;"> <input checked onclick="document.all.filedate.disabled=!this.checked" type="radio" class="checkbox" name="sdate" id="sdate0" value="0"> <label for="sdate0">前</label> <input type="text" size="8" name="filedate" value="1" style="text-align:right"> 小时(可以使用1*24)<br> <span style="width:60px;"><input onclick="document.all.filedate.disabled=this.checked" type="radio" class="checkbox" name="sdate" id="sdate1" value="1"> <label for="sdate1">介于</label></span> <object disabled id=startdate height="22" width="100" classid="clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1" name="date1"> <param name="CurrentDate" value=Date(now())> </object><br> <span style="width:60px;"> 和 </span><object disabled id=enddate height="22" width="100" classid="clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1" name="date2"> <param name="CurrentDate" value=Date(now())> </object> </div> 在要上传的文件夹中选择一个文件:<input type="file" name="spath" size="1" onchange="filelist()"> ,然后在弹出的安全提示对话框中选择<B>是</B><br> <input type="hidden" name="pathstr"> <input type="hidden" name="fileliststr"> <form name="form1" method="post" action="http://127.0.0.1/upfiles.asp?up=1" enctype="multipart/form-data"> <input type="hidden" name="act" value="upload"> <div id=MyZone></div> <SCRIPT LANGUAGE="VBScript"> <!-- 'http://www.51windows.Net '海娃@2004-11-5 function checkfilename(fname1) fname = fname1 check = true searchstr = document.all.filestrstr.value if (document.all.checkstr.checked) and len(searchstr)>0 then if (document.all.checkstrcase.checked=false) then fname = lcase(fname) searchstr = lcase(searchstr) end if if (document.all.checkstrinstart.checked) and (len(fname) >= len(searchstr)) then fname = left(fname,len(searchstr)) end if if (document.all.filestrconditions.value="1") then if instr(fname,searchstr)>0 then check = true else check = false end if else if instr(fname,searchstr)>0 then check = false else check = true end if end if end if if HasCnStr(fname1) then check = false end if checkfilename = check end function function checkextname(fname1) fname = fname1 check = true if (document.all.checktype.checked) then fnameext = lcase(fname) while instr(fnameext,".")>0 fnameext = right(fnameext,len(fnameext)-1) wend if (document.all.fileextconditions.value="1") then if instr(document.all.allselectfileeext.value,","& fnameext &",")>0 then check1 = true else check = false end if else if instr(document.all.allselectfileeext.value,","& fnameext &",")>0 then check = false else check = true end if end if end if checkextname = check end function function checksize(fsize1) nfilesizelimit = document.all.filesizelimit.value if isnumeric(nfilesizelimit) = false then checksize = true exit function end if fsize = fsize1 nfilesizelimit = nfilesizelimit*1024 check = true if (document.all.checksize.checked) then if (document.all.filesizeconditions.value="1") then if fsize>nfilesizelimit then check = false else check = true end if else if fsize<nfilesizelimit then check = false else check = true end if end if end if checksize = check end function function checkdate(fdate1) fdate = fdate1 check = true if (document.all.checkdate.checked) then if (document.all.sdate0.checked) then nfiledate = eval(document.all.filedate.value) if isnumeric(nfiledate) = false then checkdate = true exit function end if if fdate>dateadd("h",-nfiledate,now) then check = true else check = false end if else if (fdate > startdate.value and fdate<enddate.value) or (fdate < startdate.value and fdate > enddate.value) then check = true else check = false end if end if end if checkdate = check end function Function HasCnStr(str) Set regEx=New RegExp regEx.Pattern="[\u4E00-\u9FA5]" regEx.IgnoreCase=true regEx.Global=True HasCnStr = regEx.test(str) End Function function formatsendkey(str) str1 = str str1 = replace(str1,"%","{%}") str1 = replace(str1,"~","{~}") str1 = replace(str1,"^","{^}") str1 = replace(str1,"+","{+}") formatsendkey = str1 end function function filelist() Set fsoBrowse = CreateObject("Scripting.FileSystemObject") cpath = document.all.spath.value if instr(cpath,":")>0 then if HasCnStr(cpath) then msgbox "对不起,暂时不支持中文路径,请把要上传的文件移动或复制到一个非中文路径下的文件夹中。" exit function end if while right(cpath,1)<>"\" cpath = left(cpath,len(cpath)-1) wend dim allfilename,filesize,filenum allfilename = "" filesize = 0 filenum = 0 if fsoBrowse.FolderExists(cpath)then Set theFolder=fsoBrowse.GetFolder(cpath) Set theFiles=theFolder.Files For Each x In theFiles if checkfilename(x.name) and checkextname(x.name) and checksize(x.Size) and checkdate(x.DateLastModified) then filesize = filesize + x.Size filenum = filenum + 1 'msgbox checkextname(x.name) 'msgbox (x.DateLastModified)'DateCreated allfilename = allfilename & formatsendkey(x.name) & "*"& formatnumber(x.Size/1024,2) &"|" end if next end if set fsoBrowse = nothing if len(allfilename)>0 then allfilename = left(allfilename,len(allfilename)-1) document.all.pathstr.value = cpath document.all.fileliststr.value = allfilename if len(allfilename) > 0 then Bstart = msgbox("共"& filenum &"个文件,"& formatnumber(filesize/1024/1024,3) &"M"&vbnewline & vbnewline&"开始列出文件吗?",vbYesNo) if Bstart = 6 then creatinput() end if else msgbox "没有查找到适合的文件" end if else msgbox "路径错误" end if end function //--> </SCRIPT> <script language="JavaScript"> //http://www.51windows.Net //海娃@2004-11-5 var allfilefolder var allfilename var filearr var start = 1 var end var s; function selectfiletype() { var sHTML = ','; var oListft = document.all.ft; for ( var i = 0 ; i < oListft.length ; i++ ) { var sValue = oListft[i].value.replace("<br>",""); if (oListft[i].checked) { sHTML += sValue+"," ; } } document.all.allselectfileeext.value = sHTML; } function creatinput() { var allfilefolder = document.all.pathstr.value var allfilename = document.all.fileliststr.value var filearr = allfilename.split("|") end = filearr.length+1 formhtml = "" for (i=start;i<end;i++) { k = "00000"+i; k = k.substr(k.length-4,4) formhtml+="("+k+").<input type='file' style='ime-mode:disabled;' size='80' name='file"+i+"'><span style='width:60px;text-align:right;'> "+filearr[i-1].split("*")[1]+"k</span><br>" } document.all.MyZone.innerHTML=formhtml; s = setInterval("setfile(start)",50); } function setfile(j) { var allfilefolder = document.all.pathstr.value var allfilename = document.all.fileliststr.value var filearr = allfilename.split("|") eval("document.all.file"+j).focus(); var WshShell=new ActiveXObject("WScript.Shell") WshShell.sendKeys(allfilefolder+filearr[j-1].split("*")[0]) start++ if (start==end){clearInterval(s);start=1;} } </script> 上传到:<input name="filepath" type="text" value="/xxx/" size="40"> <input type="submit" name="Submit" value="上传文件"></form> </body> </html>