用户操作
[即时聊天] [发私信] [加为好友]
zhybxyzID:zhybxyz
585次访问,排名2万外好友0人,关注者0
zhybxyz的文章
原创 4 篇
翻译 0 篇
转载 0 篇
评论 24 篇
最近评论
文章分类
收藏
    相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 自动获得远程图片收藏

    新一篇: XMLHTTP的应用,获得远程的文件,获得远程HTML文件源码 | 

     

    * written by Jaron ,2003-11-12 */
    /* 原出处:CSDN文档中心 http://www.csdn.net/develop WEB技术中文网 */
    /* 转载请注明出处和保留此版权信息 */
    /* 欢迎使用SiteManager-CMS Server 网站管理系统 http://sitemanager.cnzone.net  */
    /* 自动创建目录,自动将原文件名更名,文件格式的限制以及其他功能的一些优化
    /* 自动保存网页文件中 http://.... 格式的图片到本地

    程序实现功能:自动将远程页面的文件中的图片下载到本地服务器

    '将下文保存为 save2local.asp
    '测试:save2local.asp?url=http://ent.sina.com.cn/s/m/2003-11-11/1411231388.html

    <%
    '参数设置开始
    url =  request("url")
    localaddr = server.MapPath("images_remote/") '保存到本地的目录
    localdir = "images_remote/" 'http 访问的相对路径
    AllowFileExt = "jpg|bmp|png|gif" '支持的文件名格式
    '参数设置完毕

    if createdir(localaddr) = false then
     response.Write "创建目录失败,请检查目录权限"
     response.End
    end if
    response.Write Convert2LocalAddr(url,localaddr,localdir)

    function Convert2LocalAddr(url,localaddr,localdir)
      '参数说明
      'url 页面地址
      'localaddr 保存本地的物理地址
      'localdir 相对路径
     strContent = getHTTPPage(url)
     Set objRegExp = New Regexp
     objRegExp.IgnoreCase = True
     objRegExp.Global = True
     objRegExp.Pattern = "<img.+?>"
     Set Matches =objRegExp.Execute(strContent)
     For Each Match in Matches
      RetStr = RetStr & GetRemoteImages(Match.Value)
     Next
     ImagesArray=split(RetStr,"||")
     RemoteImage=""
     LocalImage=""
     for i=1 to ubound(ImagesArray)
      if ImagesArray(i)<>"" and instr(RemoteImage,ImagesArray(i))<1 then
       fname=baseurl&cstr(i&mid(ImagesArray(i),instrrev(ImagesArray(i),".")))
       ImagesFileName = ImagesArray(i)
       AllowFileExtArray = split(AllowFileExt,"|")
       isGetFile = false
       for tmp = 0 to ubound(AllowFileExtArray)
        if lcase(GetFileExt(ImagesFileName)) = ALlowFileExtArray(tmp) then
         isGetFile=True
        end if
       next
       if isGetFile = true then
        newfilename =  GenerateRandomFileName(fname)
        call Save2Local(ImagesFileName,localaddr & "/" & newfilename)
        RemoteImage=RemoteImage&"||"& ImagesFileName
        LocalImage=LocalImage&"||" & localdir & newfilename
       end if
      end if
     next
     arrnew=split(LocalImage,"||")
     arrall=split(RemoteImage,"||")
     for i=1 to ubound(arrnew)
      strContent=replace(strContent,arrall(i),arrnew(i))
     next
     Convert2LocalAddr = strContent
    end function

    function GetRemoteImages(str)
     Set objRegExp1 = New Regexp
     objRegExp1.IgnoreCase = True
     objRegExp1.Global = True
     objRegExp1.Pattern = "http://.+? "
     set mm=objRegExp1.Execute(str)
     For Each Match1 in mm
      tmpaddr = left(Match1.Value,len(Match1.Value)-1)
      GetRemoteImages=GetRemoteImages&"||" & replace(replace(tmpaddr,"""",""),"'","")
     next
    end function

    function getHTTPPage(url)
     on error resume next
     dim http
     set http=Server.createobject("Msxml2.XMLHTTP")
     Http.open "GET",url,false
     Http.send()
     if Http.readystate<>4 then exit function
     getHTTPPage=bytes2BSTR(Http.responseBody)
     set http=nothing
     if err.number<>0 then err.Clear 
    end function

    Function bytes2BSTR(vIn)
     dim strReturn
     dim i,ThisCharCode,NextCharCode
     strReturn = ""
     For i = 1 To LenB(vIn)
      ThisCharCode = AscB(MidB(vIn,i,1))
      If ThisCharCode < &H80 Then
       strReturn = strReturn & Chr(ThisCharCode)
      Else
       NextCharCode = AscB(MidB(vIn,i+1,1))
       strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
       i = i + 1
      End If
     Next
     bytes2BSTR = strReturn
    End Function

    function getHTTPimg(url)
     on error resume next
     dim http
     set http=server.createobject("MSXML2.XMLHTTP")
     Http.open "GET",url,false
     Http.send()
     if Http.readystate<>4 then  exit function
     getHTTPimg=Http.responseBody
     set http=nothing
     if err.number<>0 then err.Clear
    end function

    function Save2Local(from,tofile)
     dim geturl,objStream,imgs
     geturl=trim(from)
     imgs=gethttpimg(geturl)
     Set objStream = Server.CreateObject("ADODB.Stream")
     objStream.Type =1
     objStream.Open
     objstream.write imgs
     objstream.SaveToFile tofile,2
     objstream.Close()
     set objstream=nothing
    end function

    function geturlencodel(byval url)'中文文件名转换
     Dim i,code
     geturlencodel=""
     if trim(Url)="" then exit function
     for i=1 to len(Url)
      code=Asc(mid(Url,i,1))
      if code<0 Then code = code + 65536
      If code>255 Then
       geturlencodel=geturlencodel&"%"&Left(Hex(Code),2)&"%"&Right(Hex(Code),2)
      else
       geturlencodel=geturlencodel&mid(Url,i,1)
      end if
     next
    end function

    Function GenerateRandomFileName(ByVal szFilename) '根据原文件名,自动以日期YYYY-MM-DD-RANDOM格式生成新文件名
        Randomize
        ranNum = Int(90000 * Rnd) + 10000
        If Month(Now) < 10 Then c_month = "0" & Month(Now) Else c_month = Month(Now)
        If Day(Now) < 10 Then c_day = "0" & Day(Now) Else c_day = Day(Now)
        If Hour(Now) < 10 Then c_hour = "0" & Hour(Now) Else c_hour = Hour(Now)
        If Minute(Now) < 10 Then c_minute = "0" & Minute(Now) Else c_minute = Minute(Now)
        If Second(Now) < 10 Then c_second = "0" & Second(Now) Else c_second = Minute(Now)
        fileExt_a = Split(szFilename, ".")
        FileExt = LCase(fileExt_a(UBound(fileExt_a)))
        GenerateRandomFileName = Year(Now) & c_month & c_day & c_hour & c_minute & c_second & "_" & ranNum & "." & FileExt
    End Function

    Function CreateDIR(ByVal LocalPath) '建立目录的程序,如果有多级目录,则一级一级的创建
        On Error Resume Next
        LocalPath = Replace(LocalPath, "\", "/")
        Set FileObject = server.CreateObject("Scripting.FileSystemObject")
        patharr = Split(LocalPath, "/")
        path_level = UBound(patharr)
        For I = 0 To path_level
            If I = 0 Then pathtmp = patharr(0) & "/" Else pathtmp = pathtmp & patharr(I) & "/"
            cpath = Left(pathtmp, Len(pathtmp) - 1)
            If Not FileObject.FolderExists(cpath) Then FileObject.CreateFolder cpath
        Next
        Set FileObject = Nothing
        If Err.Number <> 0 Then
            CreateDIR = False
            Err.Clear
        Else
            CreateDIR = True
        End If
    End Function

    function GetfileExt(byval filename)
     fileExt_a=split(filename,".")
     GetfileExt=lcase(fileExt_a(ubound(fileExt_a)))
    end function
    %>

    发表于 @ 2005年12月11日 17:17:00|评论(loading...)|编辑

    新一篇: XMLHTTP的应用,获得远程的文件,获得远程HTML文件源码 | 

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © zhybxyz