当前位置: 首页 > 图文教程 > 网络编程 > ASP > 直接保存URL图像或网页到服务器本地的类

ASP
asp生成三维饼图的函数
ASP下的简洁的多重查询的方法与函数 真不错
发一个ASP的ADODB类代码
A利用ASP小偷和Google实现在线翻译功能的代码
ASP类型网站结合动网论坛会员的方法
Asp下实现多表单域无组件文件上传的实例
asp制作中常用到的函数库集合
易心asp分页类 v1.0
asp中xmlhttp组件发包
检测是否为数字类型的asp代码
可以获得文件的文件名的asp函数
用asp实现访问远程计算机上MDB access数据库文件的方法
用ASP实现写IIS日志的代码
asp在IE浏览器中下载服务端上的各类文件的实现方法
asp汉字中文图片验证码的实现代码
asp WAP获取手机终端信息的一段代码
asp取得数组中的最大值的方法
用asp实现的截取指定格式字符串的代码
asp jmail发邮件 详细解析
ASP编程中连接数据库和数据库操作的常用代码

ASP 中的 直接保存URL图像或网页到服务器本地的类


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 160 ::
收藏到网摘: n/a

复制代码 代码如下:

<% @ LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
Option Explicit
Class BoxInfoImg
'传输类的使用方法
'图象上传和上传信息获取CLASS
'用法:
'dim imgUp
'set imgUp=new BoxInfoImg
'属性:
'imgUp.width '宽
'imgUp.height '高
'imgUp.imgSize '大小
'imgUp.imgType '类型
'imgUp.imgName '文件名
'imgUp.imgName '图像文件名:"&
'imgUp.filename '文件名"&
'imgUp.extName '扩展名"
'imgUp.DiskPath '保存位置"
'imgUp.XuPath '虚拟路径"
'imgUp.NewUrl '保存后url"
'imgUp.SaveMode '保存后url"
'方法:
'imgUp.saveImg(fullpath) '保存图像文件
dim ADOS
dim width,height,imgSize,imgType,imgName,fileName
dim preName,extName
dim SavePath,SaveName,SaveMode
dim DiskPath,XuPath,NewUrl
dim textStr
dim i
Private Sub Class_Initialize
set ADOS=Server.CreateObject("Adodb.Stream")
ADOS.Type=1
ADOS.Mode=3
ADOS.Open
getImageSize
End Sub
Private Sub Class_Terminate
ADOS.close
set ADOS=nothing
End Sub
Public Function getImageSize()
dim ret(3),bFlag,fdata,fsize
fdata=GetWebData(GetStrUrl) '取得XmlHttp数据
fsize=clng(lenb(fdata)) '取得数据尺寸

if fsize=0 then
exit function
R_write "无有效数据保存",0
end if
ADOS.Write fdata
ADOS.Position=0
SaveName=iSaveName
SavePath=iSavePath
SaveMode=iSaveMode
'写文本对象读取图像长宽和类型
ADOS.Position=0 '重置数据开始位置
bFlag=ADOS.read(3)
if isNull(bFlag) then
width=0
height=0
imgSize=0
imgType="unknow"
ret(0)=imgType:ret(1)=width:ret(2)=height:ret(3)=""
getimagesize=ret
exit function
end if
'取文件类型和长宽
select case hex(binVal(bFlag))
case "4E5089":
ADOS.read(15)
ret(0)="png"
ret(1)=BinVal2(ADOS.read(2))
ADOS.read(2)
ret(2)=BinVal2(ADOS.read(2))
case "464947":
ADOS.read(3)
ret(0)="gif"
ret(1)=BinVal(ADOS.read(2))
ret(2)=BinVal(ADOS.read(2))
case "FFD8FF":
dim p1
do
do: p1=binVal(ADOS.Read(1)): loop while p1=255 and not ADOS.EOS
if p1>191 and p1<196 then exit do else ADOS.read(binval2(ADOS.Read(2))-2)
do:p1=binVal(ADOS.Read(1)):loop while p1<255 and not ADOS.EOS
loop while true
ADOS.Read(3)
ret(0)="jpg"
ret(2)=binval2(ADOS.Read(2))
ret(1)=binval2(ADOS.Read(2))
case else:
if left(Bin2Str(bFlag),2)="BM" then
ADOS.Read(15)
ret(0)="bmp"
ret(1)=binval(ADOS.Read(4))
ret(2)=binval(ADOS.Read(4))
else
ret(0)=""
end if
end select
'
dim tempStr
dim nameStr
dim defaultName
dim ln
tempStr=split(GetStrUrl,"/")
nameStr=tempStr(ubound(tempStr))
if nameStr="" then
r_write "错误的URL,请输入可访问的URL",0
exit function
end if
fileName=split(nameStr,"?")(0)
ln=inStrRev(fileName,".")
if ln>0 then
preName=left(fileName,inStrRev(fileName,".")-1)
else
preName=fileName
end if
'R_write fileName,1
'R_write inStrRev(fileName,"."),1
'R_write fileName,0
extName=right(fileName,len(fileName)-inStrRev(fileName,"."))
Select case ret(0)
case "png","jpg","bmp","gif","swf"
width=ret(1)
height=ret(2)
imgSize=fsize
imgType=ret(0)
imgName=preName&"."&ret(0)
case else
width=0
height=0
imgSize=fsize
imgName="unknow"
imgType=".unknow"
end select
if SaveMode="1" then
defaultName=imgName
if SaveName="" then
SaveName=defaultName
else
if lcase(right(SaveName,4))<>"."&imgType then
SaveName=SaveName&"."&imgType
end if
end if
else
defaultName=filename
end if
if SaveName="" then SaveName=defaultName
SavePath=replace(SavePath,"//","/")
if right(SavePath,1)<>"/" then SavePath=SavePath&"/"
if SavePath="" then SavePath="./"
DiskPath=server.mappath(SavePath&SaveName)
XuPath=replace(replace(DiskPath,server.mappath("/"),""),"\","/")
NewUrl="http://"&Request.ServerVariables("SERVER_NAME")&XuPath
getimagesize=ret
End Function
Public function SaveImg(FullPath)
SaveImg=false
if SaveMode="1" then
if trim(fullpath)="" or _
width=0 or _
height=0 or _
imgSize=0 or _
imgType=".unknow" then exit function end if
end if
ADOS.Position=0
if SaveMode="2" then
ADOS.Type=2
ADOS.Charset ="gb2312"
ADOS.SaveToFile FullPath,2
textStr=ADOS.readtext()
else
ADOS.SaveToFile FullPath,2
end if
SaveImg=true
End function
Private Function Bin2Str(Bin)
Dim I,Str,clow
For I=1 to LenB(Bin)
clow=MidB(Bin,I,1)
if ASCB(clow)<128 then
Str = Str & Chr(ASCB(clow))
else
I=I+1
if I <= LenB(Bin) then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
end if
Next
Bin2Str = Str
End Function
Private Function Num2Str(num,base,lens)
dim ret:ret = ""
while(num>=base)
ret=(num mod base) & ret
num=(num - num mod base)/base
wend
Num2Str = right(string(lens,"0") & num & ret,lens)
End Function
Private Function Str2Num(str,base)
dim ret:ret = 0
for i=1 to len(str)
ret = ret *base + cint(mid(str,i,1))
next
Str2Num=ret
End Function
Private Function BinVal(bin)
dim ret:ret = 0
for i = lenb(bin) to 1 step -1
ret = ret *256 + ascb(midb(bin,i,1))
next
BinVal=ret
End Function
Private Function BinVal2(bin)
dim ret:ret = 0
for i = 1 to lenb(bin)
ret = ret *256 + ascb(midb(bin,i,1))
next
BinVal2=ret
End Function
Private Function GetWebData(byval StrUrl)
if StrUrl="" then
r_write "无效",1
exit function
end if
dim tempStr
tempStr=split(GetStrUrl,"/")
if tempStr(ubound(tempStr))="" or inStr(StrUrl,"/")=0 then
R_Write "未指定有效的URL",0
exit function
end if
dim Retrieval
Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")
With Retrieval
.Open "Get", StrUrl, False, "", ""
.Send
GetWebData =.ResponseBody
End With
Set Retrieval = Nothing
End Function
End Class
%>
<%
SUB saveUpload(GetUrl,SavePath,SaveName,mode)
dim chkInfo
if GetUrl="" then
call tform()
R_Write "<br>传输文件栏没有填写!",0
end if
set imgUp=new BoxInfoImg
if mode="1" and imgUp.imgName="unknow" then
call tform()
set imgUp=nothing
R_Write "<br>传输文件栏没有填写有效的图像URL!",0
end if
chkInfo=""
dim i,testStr,showStr
'限定格式
select case imgUp.imgType
case "png","jpg","bmp","gif"
if imgUp.width=0 or imgUp.height=0 or imgUp.imgSize=0 then
chkInfo="<li>"+"传输图像数据不存在,请确定你的URL是否正确"
end if
case else
chkInfo="<li>无效的传输格式,允许图像数据格式为 ""png"",""jpg"",""bmp"",""gif""</li>"
end select
'R_Write SavePath,1
'R_Write mode,1
'R_Write imgUp.imgName,1
'R_Write imgUp.filename,1
'R_Write "SaveName="&SaveName,1
if mode="1" and chkInfo<>"" then '检查上传图像数据合格后,则保存之
call tform()
R_Write chkInfo,0
else
Server.ScriptTimeOut=5000
imgUp.saveImg imgUp.DiskPath
end if
'-------------
R_write "<b>===处理结果部分资料===</b><br>",1
R_write "  宽:"&imgUp.width&" pix",1
R_write "  高:"&imgUp.height&" pix",1
R_write " 大小:"&formatnumber(imgUp.imgSize/1024,2,-1)&" KB",1
R_write " 格式:"&imgUp.imgType,1
R_write "图像文件名:"&imgUp.imgName,1
R_write "文件名:"&imgUp.filename,1
R_write "扩展名:"&imgUp.extName,1
R_write "保存位置:"&imgUp.DiskPath,1
R_write "虚拟路径:"&imgUp.XuPath,1
R_write "保存后url:"&imgUp.NewUrl,1
call tform()
set imgUp=nothing
R_write "------------------------<br>传输完毕",0
End SUB
SUB tform()
%>
<FORM METHOD=POST name=form2 style="margin:0px;">
 获取 URL:<INPUT TYPE="text" size=50 NAME="GetStrUrl" value="http://www.blueidea.com/img/common/logo.gif"><br>
 保存路径:<INPUT TYPE="text" size=50 NAME="SavePath" value="./"><br>
保存文件名:<INPUT TYPE="text" size=50 NAME="SaveName" value=""><br>
 保存类型:
<INPUT TYPE="radio" NAME="SaveMode" value=1 <%if iSaveMode="1" or iSaveMode="" then response.write "checked" end if%>> Web图像
<INPUT TYPE="radio" NAME="SaveMode" value=2 <%if iSaveMode="2" then response.write "checked" end if%>> 文本文件
<INPUT TYPE="radio" NAME="SaveMode" value=0 <%if iSaveMode="0" then response.write "checked" end if%>> 二进制数据
<INPUT TYPE="submit" value="确定提交">
<hr size=1>
<%
if GetStrUrl<>"" then
if iSaveMode="2" then
R_write "<button name=""Previews"" title=""页面快照"" onclick=""runCode(0);"">Run this code</button>",1
R_write "<textarea cols=100 name=content rows=10 style="" width:90%;fixed;word-break:break-all;"">"&server.htmlencode(imgUp.textStr)&"</textarea>",1
else
R_write "<img src="""&imgUp.XuPath&"?"&timer()&""" width="&imgUp.width&" height="&imgUp.height&" alt="&imgUp.imgName&">",1
end if
end if
%>
</FORM>
<hr size=1>
<br>如果保存为图像,不要加扩展名,自动识别加上,如果加的扩展名不合也回自动加上
<br>保存文件路径为空则保存在当前路径
<br>保存文件名为空则使用自动识别取得的文件名
<br>保存为其他任意方式,对asp html 等为取得发送结果的Html
<%End SUB
Sub R_write(str,num)
dim istr:istr=str
dim inum:inum=num
response.write str&"<br>"
if inum=0 then response.end
end sub
'=================调用过程 Execute========================
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="V37">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
/*function runCode()
{
var code=event.srcElement.parentElement.children[0].value;
var newwin=window.open('','','');
newwin.opener = null
newwin.document.write(code);
newwin.document.close();
}
function setsmiley(what)
{
document.PostForm.comment.value += " "+what;
document.PostForm.comment.focus();
} */
function runCode(num) //运行代码HTML
{
// var code=event.srcElement.parentElement.children[0].value;
if(num==1){var code=window.form2.code.innerText;}
if(num==0){var code=window.form2.content.innerText;}
var newwin=window.open('','','');
newwin.opener = null
newwin.document.write(code);
newwin.document.close();
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<%
dim imgUp '传输对象
dim GetStrUrl '要获取的图像或网页URL
dim iSaveName '要保存的名字
dim iSavePath '要保存的虚拟路径
dim iSaveMode '保存的模式 1 为图像 0 为任意文件
iSavePath=trim(request.form("SavePath"))
iSaveName=trim(request.form("SaveName"))
GetStrUrl=trim(request.form("GetStrUrl"))
iSaveMode=trim(request.form("SaveMode"))
if GetStrUrl<>"" then
CALL saveUpload(GetStrUrl,iSavePath,iSaveName,iSaveMode)
call tform()
else
call tform()
end if
%>
</BODY>
</HTML>