|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。ado|stream|web|xml|缓存|下载 研讨了几天Adodb.stream和XMLHTTP的使用,
找了很多很风趣的教程,
上面的代码是将一个近程的页面,图片地址保留到当地的实例。
将代码保留为一个.ASP的文件,
将它放到IIS的一个目次下,在它的下级见一个cache目次,
下载后的文件将保留到cache目次下
fso.Asp?path=http://www.im286.com/images/im286/logo.gif
你就能够将http://www.im286.com/images/im286/logo.gif文件保留上去。
学小偷的伴侣也能够看看。。
<%
'----------近程获得内容,并将内容存在当地电脑上,包含任何文件!----------
'---------------使用xmlhttp和adodb.stream-----------------
'OnErrorResumeNext
'-------------------------------界说输入格局-----------------------------
path=request("path")
ifpath=""then
path="http://www.百度.com/index.html"
'这里界说的网址是百度,,注重必定要有文件后缀
endif
sPath=Path
ifleft(lcase(path),7)<>"http://"then
'-------------假如后面没有http就是当地文件,交给LocalFile处置------------
LocalFile(path)
else
'--------------------不然为近程文件,交给RemoteFile处置------------------
RemoteFile(Path)
endif
'Response.Writeerr.Description
'--------------处置函数-----------
subLocalFile(Path)
'-------------------假如为当地文件则复杂的跳转到该页面-------------------
'Response.RedirectPath
Response.write"产生毛病!"
EndSub
SubRemoteFile(sPath)
'-------------------------处置近程文件函数------------------------------
FileName=GetFileName(sPath)
'-------------GetFileName为把地址转换为及格的文件名进程-------------
FileName=Server.MapPath("/Cache/"&FileName)
SetobjFso=Server.CreateObject("Scripting.FileSystemObject")
'Response.WritefileName
ifobjFso.FileExists(FileName)Then
'--------------反省文件是不是是已会见过,如是,则复杂跳转------------
Response.Redirect"/cache/"&GetFileName(path)
Else
'----------------不然的话就先用GetBody函数读取----------------------
'Response.WritePath
t=GetBody(Path)
'-----------------用二进制办法写到阅读器上--------------------------
Response.BinaryWritet
Response.Flush
'-----------------输入缓冲------------------------------------------
SaveFilet,GetFileName(path)
'------------------将文件内容缓存到当地途径,以待下次会见-----------
Endif
SetobjFso=Nothing
EndSub
FunctionGetBody(url)
'-----------------------本函数为近程获得内容的函数---------------------
'onerrorresumenext
'Response.Writeurl
SetRetrieval=CreateObject("Microsoft.XMLHTTP")
'----------------------创立XMLHTTP对象-----------------------------
WithRetrieval
.Open"Get",url,False,"",""
'------------------用Get,异步的办法发送-----------------------
.Send
'GetBody=.ResponseText
GetBody=.ResponseBody
'------------------函数前往获得的内容--------------------------
EndWith
SetRetrieval=Nothing
'response.Writeerr.Description
EndFunction
FunctionGetFileName(str)
'-------------------------本函数为及格化的文件名函数-------------------
str=WordStr(lcase(str),"http://","")
str=WordStr(lcase(str),"//","/")
str=WordStr(str,"?","")
str=WordStr(str,"&","")
str=WordStr(str,"/","")
str=replace(str,vbcrlf,"")
GetFileName=str
EndFunction
subSaveFile(str,fName)
'-------------------------本函数为将流内容存盘的函数-------------------
'onerrorresumenext
SetobjStream=Server.CreateObject("ADODB.Stream")
'--------------创立ADODB.Stream对象,必需要ADO2.5以上版本---------
'objStream.Type=adTypeBinary
objStream.Type=1
'-------------以二进制形式翻开-------------------------------------
objStream.Open
objstream.writestr
'--------------------将字符串内容写入缓冲--------------------------
'response.Writefname
'途径注重
objstream.SaveToFile"d:/web/cache/"&fName,2
'objstream.SaveToFile"d:cache"&fName,adSaveCreateOverWrite
'--------------------将缓冲的内容写入文件--------------------------
'response.BinaryWriteobjstream.Read
objstream.Close()
setobjstream=nothing
'-----------------------封闭对象,释放资本-------------------------
'response.Writeerr.Description
Endsub
functionsaveimage(from,tofile)
dimgeturl,objStream,imgs
geturl=trim(from)
imgs=gethttppage(geturl)'获得图片的具休内容的进程
SetobjStream=Server.CreateObject("ADODB.Stream")'创立ADODB.Stream对象,必需要ADO2.5以上版本
objStream.Type=1'以二进制形式翻开
objStream.Open
objstream.writeimgs'将字符串内容写入缓冲
objstream.SaveToFileserver.mappath(tofile),2'-将缓冲的内容写入文件
objstream.Close()'封闭对象
setobjstream=nothing
endfunction
%>由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况; |
|