利用xmlhttp和adodb.stream加緩存技術(shù)下載遠(yuǎn)程Web文件
<%
'----------遠(yuǎn)程獲取內(nèi)容,并將內(nèi)容存在本地電腦上,包括任何文件!----------
'---------------利用xmlhttp和adodb.stream-----------------
'On Error Resume Next
'-------------------------------定義輸出格式-----------------------------
path=request("path")
if path ="" then
path="http://pcqc.86516.com/index.asp"
'這里定義的網(wǎng)址是百度,,注意一定要有文件后綴
end if
sPath = Path
if left(lcase(path),7) <> "http://" then
'-------------如果前面沒(méi)有http就是本地文件,交給LocalFile處理------------
LocalFile(path)
else
'--------------------否則為遠(yuǎn)程文件,交給RemoteFile處理------------------
RemoteFile(Path)
end if
'Response.Write err.Description
'--------------處理函數(shù)-----------
sub LocalFile(Path)
'-------------------如果為本地文件則簡(jiǎn)單的跳轉(zhuǎn)到該頁(yè)面-------------------
'Response.Redirect Path
Response.write "發(fā)生錯(cuò)誤!"
End Sub
Sub RemoteFile(sPath)
'-------------------------處理遠(yuǎn)程文件函數(shù)------------------------------
FileName = GetFileName(sPath)
'-------------GetFileName為把地址轉(zhuǎn)換為合格的文件名過(guò)程-------------
FileName = Server.MapPath("Cache/" & FileName)
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
'Response.Write fileName
if objFso.FileExists(FileName) Then
'--------------檢查文件是否是已經(jīng)訪問(wèn)過(guò),如是,則簡(jiǎn)單跳轉(zhuǎn)------------
Response.Redirect "cache/" & GetFileName(path)
Else
'----------------否則的話就先用GetBody函數(shù)讀取----------------------
'Response.Write Path
t = GetBody(Path)
'-----------------用二進(jìn)制方法寫到瀏覽器上--------------------------
Response.BinaryWrite t
Response.Flush
'-----------------輸出緩沖------------------------------------------
SaveFile t,GetFileName(path)
'------------------將文件內(nèi)容緩存到本地路徑,以待下次訪問(wèn)-----------
End if
Set objFso = Nothing
End Sub
Function GetBody(url)
'-----------------------本函數(shù)為遠(yuǎn)程獲取內(nèi)容的函數(shù)---------------------
'on error resume next
'Response.Write url
Set Retrieval = CreateObject("Microsoft.XMLHTTP")
'----------------------建立XMLHTTP對(duì)象-----------------------------
With Retrieval
.Open "Get", url, False, "", ""
'------------------用Get,異步的方法發(fā)送-----------------------
.Send
'GetBody = .ResponseText
GetBody = .ResponseBody
'------------------函數(shù)返回獲取的內(nèi)容--------------------------
End With
Set Retrieval = Nothing
'response.Write err.Description
End Function
Function GetFileName(str)
'-------------------------本函數(shù)為合格化的文件名函數(shù)-------------------
str = Replace(lcase(str),"http://","")
str = Replace(lcase(str),"http://","/")
str = Replace(str,"?","")
str = Replace(str,"&","")
str = Replace(str,"/","")
str = replace(str,vbcrlf,"")
GetFileName = str
End Function
sub SaveFile(str,fName)
'-------------------------本函數(shù)為將流內(nèi)容存盤的函數(shù)-------------------
'on error resume next
Set objStream = Server.CreateObject("ADODB.Stream")
'--------------建立ADODB.Stream對(duì)象,必須要ADO 2.5以上版本---------
'objStream.Type = adTypeBinary
objStream.Type = 1
'-------------以二進(jìn)制模式打開(kāi)-------------------------------------
objStream.Open
objstream.write str
'--------------------將字符串內(nèi)容寫入緩沖--------------------------
'response.Write fname
'路徑注意
objstream.SaveToFile "E:\webroot\pcqc\vip\UploadFile\cache\"&fName,2
'objstream.SaveToFile "d:\cache\" & fName,adSaveCreateOverWrite
'--------------------將緩沖的內(nèi)容寫入文件--------------------------
'response.BinaryWrite objstream.Read
objstream.Close()
set objstream = nothing
'-----------------------關(guān)閉對(duì)象,釋放資源-------------------------
'response.Write err.Description
End sub
function saveimage(from,tofile)
dim geturl,objStream,imgs
geturl=trim(from)
imgs=gethttppage(geturl)'取得圖片的具休內(nèi)容的過(guò)程
Set objStream = Server.CreateObject("ADODB.Stream")'建立ADODB.Stream對(duì)象,必須要ADO 2.5以上版本
objStream.Type =1'以二進(jìn)制模式打開(kāi)
objStream.Open
objstream.write imgs'將字符串內(nèi)容寫入緩沖
objstream.SaveToFile server.mappath(tofile),2'-將緩沖的內(nèi)容寫入文件
objstream.Close()'關(guān)閉對(duì)象
set objstream=nothing
end function
%>
- 用ASP VBS xmlhttp adodbstream下載和保存圖片的代碼
- 利用MSXML2.XmlHttp和Adodb.Stream采集圖片
- 使用asx3m與xstream配合解決flex與java利用httpservice傳遞xml數(shù)據(jù)問(wèn)題
- php中突破基于HTTP_REFERER的防盜鏈措施(stream_context_create)
- php錯(cuò)誤提示failed to open stream: HTTP request failed!的完美解決方法
- HttpResponse的Output與OutputStream、Filter關(guān)系與區(qū)別介紹
- 利用stream實(shí)現(xiàn)一個(gè)簡(jiǎn)單的http下載器
相關(guān)文章
asp實(shí)現(xiàn)的7xi音樂(lè)網(wǎng)的采集源代碼
asp實(shí)現(xiàn)的7xi音樂(lè)網(wǎng)的采集源代碼...2007-03-03獨(dú)孤劍寫的馬克斯迅雷片庫(kù)采集插件1.4 官方最新版提供下載了
非常不錯(cuò)的采集迅雷插件,經(jīng)本人測(cè)試非常不錯(cuò),而且作者很熱心,是個(gè)好人,希望大家支持下,不要拿去賣了。2008-01-01msxml3.dll 錯(cuò)誤 800c0005 解決方案
在運(yùn)用xmlhttp組件編寫程序中,會(huì)碰到msxml3.dll 錯(cuò)誤 800c0005系統(tǒng)未找到指定的資源。這種錯(cuò)誤,網(wǎng)上對(duì)這種錯(cuò)誤的產(chǎn)生原因有很多鐘解釋,大體說(shuō)是因?yàn)榉阑饓騏DP站口權(quán)限造成了,也說(shuō)了相應(yīng)的解決辦法2006-08-08ASP 程序?qū)崿F(xiàn)自動(dòng)升級(jí)功能
ASP 程序?qū)崿F(xiàn)自動(dòng)升級(jí)功能...2007-02-02實(shí)例講解ASP實(shí)現(xiàn)抓取網(wǎng)上房產(chǎn)信息
實(shí)例講解ASP實(shí)現(xiàn)抓取網(wǎng)上房產(chǎn)信息...2006-09-09ASP利用XMLHTTP實(shí)現(xiàn)表單提交以及cookies的發(fā)送的代碼
利用XMLHTTP來(lái)制作小偷的具體細(xì)節(jié)落伍很多人都發(fā)過(guò)和討論過(guò)了,但是在制作ASP小偷的過(guò)程中,很多人就發(fā)現(xiàn)ASP小偷不如PHP小偷的那么強(qiáng)大了。2008-08-08