用ASP简单封装了几个函数,使用ServerXMLHTTP把网络上的文件保存到本地服务器.

这篇博客介绍了如何利用ASP结合ServerXMLHTTP组件,将网络上的文件保存到本地服务器。虽然速度较慢,但适用于新闻图片下载和数据抓取等场景,在Windows 2003 + IIS 6.0环境下已验证成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用这个几个函数就可以实现新闻复制来的时候把图片下载到本地,或者小偷到本地等功能.不过由于是使用ServerXMLHTTP组件,所以速度偏慢,不过对于大文件,速度取决还是取决于网络和对方服务器的速度.

不过速度虽慢,但是还是方便很多了.^_^.

在Win200+IIS6.0下测试成功

 

<%

'# ----------------------------------------------------------------------------
'
# 函数:GetHTTPFile
'
# 描述:取得远程文件
'
# 参数: fFileHTTPPath-文件的网址  fReturnType-返回数据的方式
'
# 返回:(1-responseBody 2-responseText 3-responseStream)
'
# 作者:雷の龙
'
# 日期:2004
'
#-----------------------------------------------------------------------------
Function GetHTTPFile(fFileHTTPPath,fReturnType)
    
'设定脚本运行过期时间,否则大文件下不完.
    Server.scriptTimeout=999999
    
    
'设定此函数错误仍然继续,可以在捕获错误的时候处理后继续下面的程序.不过调试的时候
    '最好不要用错误仍然继续
    'on error resume next

    
'创建对象
    Dim ObjXMLHTTP
    
Set ObjXMLHTTP=Server.CreateObject("Msxml2.ServerXMLHTTP.4.0")

    
'设定过期时间防止程序因为文件太大而长久不返回内容
    lresolveTimeout = 10000   '解析DNS名字的超时时间,10秒
    lconnectTimeout = 10000    '建立Winsock连接的超时时间,10秒
    lsendTimeout = 120000    '发送数据的超时时间,120秒
    lreceiveTimeout = 10*60000     ' 接收response的超时时间,60*10秒


    
'请求文件,以异步形式
    ObjXMLHTTP.Open "GET",fFileHTTPPath,False
    ObjXMLHTTP.send
    
While ObjXMLHTTP.readyState <> 4
        ObjXMLHTTP.waitForResponse 
1000
    
Wend
    
    
'得到结果
    Dim ResultStr
    
Select Case fReturnType
        
Case 1
            ResultStr
=ObjXMLHTTP.responseBody
        
Case 2
            ResultStr
=ObjXMLHTTP.responseText
        
Case 3
            ResultStr
=ObjXMLHTTP.responseStream
        
Case Else
    
End Select
    
    
'释放对象
    Set ObjXMLHTTP=Nothing

    
'返回函数
    GetHTTPFile=ResultStr
End Function

'# ----------------------------------------------------------------------------
'
# 函数:SaveFileTo
'
# 描述:保存文件
'
# 参数: fFileContent-文件内容,fFilePath-文件保存路径
'
# 返回:
'
# 作者:雷の龙
'
# 日期:2004
'
#-----------------------------------------------------------------------------
Function SaveFileTo(fFileContent,fFilePath)
    
Set HTTPFile = Server.CreateObject("Adodb.Stream")
    
With HTTPFile
        .Type 
= 1
        .Open
        .Write fFileContent
        .SaveToFile fFilePath,
2
        .Cancel()
        .Close()
    
End With
    
Set HTTPFile=nothing
End Function

'# ----------------------------------------------------------------------------
'
# 函数:SaveHTTPFile
'
# 描述:保存网络上的文件
'
# 参数: fFileHTTPPath-网址  fFileSavePath-保存文件的相对路径
'
fFileSaveName-存储的文件名
'
# 返回:执行时间:单位秒
'
# 作者:雷の龙
'
# 日期:2004
'
#-----------------------------------------------------------------------------
Function SaveHTTPFile(fFileHTTPPath,fFileSavePath,fFileSaveName)
    
'记录程序开始的时间
    Dim BeginTime
    BeginTime
=Timer()

    
'取得文件的内容
    Dim FileValue
    FileValue
=GetHTTPFile(fFileHTTPPath,1)
    
    
'取得文件名
    If fFileSaveName<>"" Then
        fFileSavePath
=fFileSavePath&"/"&fFileSaveName
    
Else 
        fFileSavePath
=fFileSavePath&"/"&Mid(fFileHTTPPath,InStrRev(fFileHTTPPath,"/")+1)
    
End If

    
'保存到本地
    Call SaveFileTo(FileValue,Server.MapPath(fFileSavePath))

    
'记录程序运行结束的时间
    Dim EndTime
    EndTime
=Timer()

    
'返回运行时间
    SaveHTTPFile=EndTime-BeginTime

End Function
%
>

 

主要是调用SaveHTTPFile函数,下面是调用示例

 

<%
Response.Write  SaveHTTPFile(
"http://202.104.242.148/z/2337.swf",".","")
%
>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值