您的位置: 首页 N搜咨询 文章阅读 自动获得远程图片 #Writ
打印本页 放大字体 关闭本页
自动获得远程图片 #Writ

作者:N搜网友 编辑:N搜网 录入:N搜网 来源:N搜网络
录入时间:2006-9-29 更新时间:2006-9-29 点击次数:466
主标题:自动获得远程图片 #Writ
副标题:自动获得远程图片 #Writ
短标题:自动获得远程图片 #Writ
 
程序实现功能:自动将远程页面的文件中的图片下载到本地服务器

’将下文保存为 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
%>

N搜网-中国网上商店商品服务搜索门户]:[本文章由N搜网于2006-9-29录入系统,网址:www.nsall.com

打印本页 放大字体 关闭本页
 
 
相关主题文章
一些常用的正则表达式 紫雨轩IIS URL 重写组件 V1.0 [组图]
17种正则表达式 IIS实现ASP,CGI,PERL和PHP+MYSQL [组图]
WEB打印大全 关闭窗口时保存数据的办法
17种正则表达式 用正则解析图片地址,并利用XMLHTTP组件将其保存
利用ASP+JMAIL进行邮件群发的新思路 用ASP实现对ORACLE数据库的操作
ASP操作Excel技术总结 LCID地区代码
实现搜索结果的关键词变色标注的程序 IIS6.0下ASP的新增功能
浅谈如何建立三层体系结构的ASP应用程序 判断Cookies是否处于开启状态
验证码的程序及原理 在线实时开通WEB及FTP源程序 [组图]
vbs(asp)的栈类 用ASP打开远端MDB文件的方法
巧用ASP生成PDF文件 利用FSO取得BMP,JPG,PNG,GIF文件信息
远程获取内容,并将内容存在本地电脑上,包括任何… 三种禁用FileSystemObject组件的方法
js的单元格颜色间隔 一个不需要第三方组件,可实现华简单图形的类
asp实现k线图(在线) 用InstallShield 进行 ASP 软件的打包和自动安装…
如何在服务器端调用winzip命令行对上传的多个文件… 构建免受 FSO 威胁虚拟主机 [组图]
如何正确显示数据库中的图片 远程注册自己的组件
asp提高首页性能的一个技巧 Flash和Asp数据库的结合应用
ASP小偷(远程数据获取)程序的入门教程 [组图] 一个采集入库生成本地文件的几个FUCTION
asp编写的加密和解密类 不能使用asp标记的时候的一个解决办法
ASP无组件上传进度条解决方案 ASP中也能解压缩rar文件 [组图]
ASP做象资源管理器的树形目录 ASP文件上传原理分析及实现实例
一个通用的保护ASP系统的方法 编写安全的ASP代码
ASP ActiveX 组件 连接数据库查询手册
用ASP实现在线压缩与解压缩 ASP能读写注册表
xmlHTTP技术资料 ASP小偷(远程数据获取)程序入门教程
ASP网站漏洞解析及黑客入侵防范方法 轻松实现将上传图片到数据库
ASP编码优化 最简洁的多重查询的解决方案
无组件实现文件上传/下载 ASP漏洞全接触-高级篇
ASP漏洞全接触-入门篇 ASP技术访问WEB数据库
自动获得远程图片 #Writ 获得远程的文件,获得远程HTML文件源码
CDONTS和Jmail的使用 使用ASP生成图片彩色校验码
用ASP制作饼图、柱状图等 [组图] ASP生成静态页面的方法
asp组件上传 ASP中利用OWC控件实现图表功能详解 [组图]
用asp自动解析网页中的图片地址,并将其保存到本… 常用ASP自定义函数集
在ASP中用“正则表达式对象”来校验数据的合法性… ASP中正则表达式的应用
ASP面向对象编程探讨及比较 在ASP文件中调用DLL
C++中的虚函数(virtual function) C语言初学者入门讲座 第二讲 数据类型(1)
C语言初学者入门讲座 第二讲 数据类型(2) C语言初学者入门讲座 第二讲 数据类型(3)
利用VC++编写Windows95的CPL组件 调试Release版本应用程序
利用VC++开发ASP图像处理组件 如何在ASP.Net 中把图片存入数据库
用ASP实现的2000年倒记时程序 用VB6分离出文本框的单词
在ASP中用“正则表达式对象”来校验数据的合法性… 用ASP实现网上考试系统
在ASP中利用“正则表达式” 对象实现UBB风格… [组图] 在Asp.Net中从sqlserver检索(retrieve)图片
消息队列在VB.NET数据库开发中的应用 在PowerBuilder中调用ChooseColor函数
在PB中应用灵活多样的排序 用C#编写获取远程IP,MAC的方法
如何在ASP程序中打印Access报表 用Vb.net实现自定义界面
使用C#编写扩展存储过程 Java平台上的CRM系统
VB.NET开发扫描客户端服务工具 Visual Basic.Net连各种数据库的几种方法
JSP数据库连接方式总结 如何选购虚拟主机
什么是虚拟主机? 虚拟主机优点有那些?
 
 
 
本站关键字:网上商店商品服务大全 网上购物导航 在线购物搜索引擎 网店比较购物 网络商城 特色网上超市商店 网上网络开店购物