自动采集程序
最近在做一个音乐站,音乐文件嘛。。。一般是从网上收集。。so。。写了一段采集程序。
代码如下:
<% On Error Resume Next Const uploadPath = "/uploads/" '文件存放路径 Const allowFileExt = "jpg,wma,swf,gif" '允许被采集的文件类型 'Const allowFileSize = "200" Function getFile(url) If url = "" Then Exit Function Else url = Trim(url) End If '获取文件 fileExt = Lcase(Mid(url,Instrrev(url, ".")+1)) '文件类型 fileName = Lcase(Mid(url,Instrrev(url, "/")+1,Instrrev(url, ".")-Instrrev(url, "/")-1)) '无文件类型的文件名 newFilePath = getNow("Date") & "_" & Replace(FormatDateTime(Now(),3),":","") & "_" & cleanFileName(fileName) & "." & fileExt if Instr(","&Lcase(allowFileExt)&",",","&fileExt&",") = 0 Then getFile = "文件类型不允许" Exit Function End If Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP") xmlhttp.open "get",url,false xmlhttp.send 'While xmlhttp.readyState <> 4 ' xmlhttp.waitForResponse 1000 'Wend If xmlhttp.status <> 200 Then getFile="获取文件出错" Exit Function Else Set folder=Server.CreateObject("Scripting.FileSystemObject") Dim folderName folderName = getNow("Year")&getNow("Month") '文件夹 If folder.FolderExists(Server.MapPath(uploadPath))=False Then folder.CreateFolder Server.MapPath(uploadPath) End If If folder.FolderExists(Server.MapPath(uploadPath & folderName))=False Then folder.CreateFolder Server.MapPath(uploadPath & folderName) End If Set folder=Nothing file=xmlhttp.ResponseBody If lenb(file) > allowFileSize Then getFile = "文件太大,不能保存!" Exit Function Else Set objAdostream=Server.Createobject("ADODB.Str"&"eam") objAdostream.Open() objAdostream.Type=1 objAdostream.Write(file) objAdostream.SaveToFile(Server.Mappath(uploadPath & folderName &"/" & newFilePath)) objAdostream.SetEOS Set objAdostream=Nothing getFile= "<a href="""&uploadPath & folderName &"/" & newFilePath&""" target=""_balnk"">采集成功</a>" End If End If Set xmlhttp=Nothing End Function %> <script runat="server" language="jscript"> function cleanFileName(str){ str = str.replace(/[^_\.a-zA-Z\d]/ig,""); str = str.replace(/^[\/\.]+/,""); return str; } function getNow(n) { d = new Date(); switch (n) { case "Year": return d.getYear(); case "Month": return (d.getMonth() + 1); case "Date": return d.getDate(); } } </script> <%if request("do")="getfile" and request("file") <> "" then response.write(getFile(request("file"))) else%> <form id="gform" method="post" action="?do=getfile" style="display: inline"> <input name="file" type="input" style="font-size:12px;" size="40" value="http://blog.xiaobin.net/uploads/200512/08_093616_01.gif"> <input type="Submit" name="Submit" value="采集 " class="button"> </form> <%end if%>