| 网站首页 | 资讯 | 影音 | 图片 | 论坛 | 模拟驾考 | 免费取名算命 | 瓷都工具 | 留言本 | 域名 | 瓷都商城 | 汇款 | 
|
璧勮棣栭〉
|
鐡烽兘寰峰寲
|
绔欏唴鏂伴椈
|
褰辫鍓ф儏
|
姹借溅涓栫晫
|
缃戠粶鏂囨憳
|
鍛ㄦ槗鍏崷
|
鏁欑▼鎶€宸�
|
鎴夸骇淇℃伅
|
您现在的位置: 瓷都热线|诚信中国:“一就是一”(1941.CN) >> 资讯 >> 教程技巧0 >> 网络编程 >> 正文 登录 注册
专 题 栏 目
  • 鍥涘窛姹跺窛8.0绾у己闇�
  • 鏈哄姩杞﹂┚椹跺憳鑰冭瘯璧勬枡
  • 楂樿€冭瘯棰樺強绛旀
  • 最 新 热 门
    最 新 推 荐
    相 关 文 章
    一段Get取远程图片并保存
    Http Get Image 第三版(超级版)         ★★★
    Http Get Image 第三版(超级版)
    作者:不详 文章来源:不详 更新时间:2003-9-9 20:22:39
    【声明:转载此信息在于传递更多信息,其内容表达的观点并不代表本站立场,由这些信息所产生的一切后果本站不负任何责任。如果您对本信息有什么意见,欢迎和本站联系,谢谢!】http://CiDu.Net

    Http Get Image 第三版(超级版)
    <% @ 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://bbs.dvbbs.net/images/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=***********('','','');
    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>

    本次升级是由54NB联盟的雨37完成的。可以区分下载图像/文本文件/二进制数据三种。
    对于图像还可以读取图象的真正类型以及图象的长宽。

    (其中读取图象长宽的Class才是精华,大家要注意研究一下。)

    本程序在 win2K server/IIS5.0/IE6 下测试成功。

    54NB聯盟(原wc公司)荣誉出品(2003-09-1)(改版时间:2003-09-09)


    声明:以上信息资料大都是网上搜集而来,版权归作者,如有版权问题请留言告知我将马上改正。
    文中所提到的各种观点只是原文观点,各种说法未经一一确认。并不代表本站认可此观点!!
    资讯录入:ahui    责任编辑:ahui 
  • 上一篇资讯:

  • 下一篇资讯:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    点击数:842
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论