ReSaveRemoteFile函数之asp实现查找文件保存替换的代码

  '================================================

  '函数名:ReSaveRemoteFile

  '作  用:查找文件保存替换

  '参  数:Str   ----原字符串

  '参  数:url   ----当然网站URL

  '参  数:Dir -----保存目录

  '参  数:InSave ------是否保存,True,False

  '返回值:格式化取后的字符串

  '================================================

  Public Function ReSaveRemoteFile(ByVal str, ByVal URL, ByVal Dir,InSave)

  Dim s_Content

  Dim re

  Dim ContentFile, ContentFileUrl

  Dim strTempUrl,strFileUrl,DirTemp,PathTemp,FileTemp,Tempi,TempUrlArray,Arr_Path

  Dim sAllowExtName

  sAllowExtName="rm|swf"

  s_Content = str

  On Error Resume Next

  Set re = New RegExp

  re.IgnoreCase = True

  re.Global = True

  re.Pattern = "((src=|href=)((\S)+[.]{1}(" & sAllowExtName & ")))"

  Set ContentFile = re.Execute(s_Content)

  Dim sContentUrl(), n, i, bRepeat

  n = 0

  For Each ContentFileUrl In ContentFile

  strFileUrl = Replace(Replace(Replace(Replace(ContentFileUrl.Value, "src=", "", 1, -1, 1), "href=", "", 1, -1, 1), "'", ""), Chr(34), "")

  If n = 0 Then

  n = n + 1

  ReDim sContentUrl(n)

  sContentUrl(n) = strFileUrl

  Else

  bRepeat = False

  For i = 1 To UBound(sContentUrl)

  If UCase(strFileUrl) = UCase(sContentUrl(i)) Then

  bRepeat = True

  Exit For

  End If

  Next

  If bRepeat = False Then

  n = n + 1

  ReDim Preserve sContentUrl(n)

  sContentUrl(n) = strFileUrl

  End If

  End If

  Next

  If n = 0 Then

  ReSaveRemoteFile = s_Content

  Exit Function

  End If

  For i = 1 To n

  strTempUrl = sContentUrl(i) : strTempUrl = FormatRemoteUrl(strTempUrl,URL)'得到文件地址

  Response.Write(strTempUrl)

  IF InSave=True then

  Arr_Path=Split(Dir,"/")

  '----------建目录-----------------------

  For Tempi=0 To Ubound(Arr_Path)

  If Tempi=0 Then

  PathTemp=Arr_Path(0) & "/"

  ElseIf Tempi=Ubound(Arr_Path) Then

  Exit For

  Else

  PathTemp=PathTemp & Arr_Path(Tempi) & "/"

  End If

  If CheckDir(PathTemp)=False Then

  If MakeNewsDir(PathTemp)=False Then

  SaveTf=False

  Exit For

  End If

  End If

  Next

  '------------------------------------------------------

  TempUrlArray=Split(strTempUrl,"/")

  '----------检查文件是否存在.如果存在换文件名------------------

  Do while True

  FileTemp=Dir &  MakeRandom(5) & TempUrlArray(Ubound(TempUrlArray))'生成随机文件名

  If CheckFile(FileTemp)=False then

  Exit Do

  end if

  loop

  '-------------------------------------------------------------------

  Response.Write(FileTemp)

  If SaveRemoteFile(FileTemp,strTempUrl)=True then

  Response.Write("保存成功")&"<Br>"

  s_Content = Replace(s_Content,sContentUrl(i),FileTemp, 1, -1, 1)'替换地址

  Else

  Response.Write("保存失败")&"<Br>"

  End if

  Else

  s_Content = Replace(s_Content,sContentUrl(i),strTempUrl, 1, -1, 1)'替换地址

  End If

  Next

  Set re = Nothing

  PictureExist = True

  ReSaveRemoteFile = s_Content

  Exit Function

  End Function