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

代码如下:

<% @ 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>

(0)

相关推荐

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

    复制代码 代码如下: <% @ LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <% Option Explicit Class BoxInfoImg     '传输类的使用方法     '图象上传和上传信息获取CLASS '用法:     'dim imgUp     'set imgUp=new BoxInfoImg '属性:      'imgUp.width    '宽     'imgUp.height    '

  • 浅谈MUI框架中加载外部网页或服务器数据的方法

    我们很多同学在实施使用MUI框架的时候,在打开新的页面的时候常使用的方式是:mui.openwindow的方法,然而遇到网页需要从服务器或者是要嵌套外部的网页的时候,由于网速的问题会遇到加载时出现白屏,等待时间过长,导致用户体验不好. 页面加载的时候使用plus.webview.create方法就很好的解决了这个问题. 废话不多说直接贴代码 首先我们需要在创建一个父页面,以下是父页面的JS // H5 plus事件处理 function plusReady(){ var nwaiting = p

  • Java 根据网络URL获取该网页上面所有的img标签并下载图片

    说明:根据网络URL获取该网页上面所有的img标签并下载符合要求的所有图片 所需jar包:jsoup.jar import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.

  • WPF程序将控件所呈现的内容保存成图像

    有的时候,我们需要将控件所呈现的内容保存成图像保存下来,例如:InkCanvas的手写墨迹,WebBrowser中的网页等.可能有人会说,这个不就是截图嘛,找到控件的坐标和大小,调用截图API不就可以了嘛.的确,对于规则的控件来说,通过截图的却可以实现,可是,如果控件不规则或不透明度不是100%,则会把其背景控件的视觉效果也给截取下来. 要实现只对控件进行截图,可以利用RenderTargetBitmap类获取Visual对象的视觉效果,从而实现对控件截图效果. RenderTargetBitm

  • 使用PHP获取当前url路径的函数以及服务器变量

    PHP获取当前url路径的函数及服务器变量:代码: 复制代码 代码如下: <?php$path = /usr/opt/../ect/abcd;echo $_SERVER['DOCUMENT_ROOT']."<br>";   //获得服务器文档根变量(取决于http.conf中的配置)echo $_SERVER['PHP_SELF']."<br>";  //获得执行该代码的文件的路径,与http.conf中的配置有关系.echo __FI

  • Pycharm保存不能自动同步到远程服务器的解决方法

    Deployment已经设置了远程服务,Pycharm也已经取消自动保存,确保Ctrl+S可以触发,可是依旧不能自动同步到远程服务器.捣鼓了半天发现在Delployment的mapping标签里有一个小框框: 手动点之,再次修改保存,成功同步到远程服务器~~ 以上这篇Pycharm保存不能自动同步到远程服务器的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • python 实现将Numpy数组保存为图像

    第一种方案 可以使用scipy.misc,代码如下: import scipy.misc misc.imsave('out.jpg', image_array) 上面的scipy版本会标准化所有图像,以便min(数据)变成黑色,max(数据)变成白色.如果数据应该是精确的灰度级或准确的RGB通道,则解决方案为: import scipy.misc misc.toimage(image_array, cmin=0.0, cmax=...).save('outfile.jpg') 第二种方案 使用P

  • TensorFlow保存TensorBoard图像操作

    简单的代码: import tensorflow as tf In [2]: matrix1=tf.constant([[3.,3.]]) In [3]: matrix2=tf.constant([[2.],[2.]]) with tf.Session() as sess: ...: writer = tf.summary.FileWriter('./graph', sess.graph) ...: result = sess.run(tf.matmul(matrix1, matrix2)) .

  • Blender Python编程实现批量导入网格并保存渲染图像

    目录 引言 导入库 移除默认对象和相机 添加多个 “猴头” 网格 创建相机 保存渲染的图像 引言 继上一篇 <Blender Python 编程:快速入门> 我们已经了解了 Blender Python 脚本的基本概念.接下来让我们了解如何用 Python 编程实现一些 有意思的功能(减轻部分工作量). Blender 并不是唯一一款允许你为场景编程和自动化任务的3D软件; 随着每一个新版本的推出,Blender 正逐渐成为一个可靠的 CG 制作一体化解决方案,从使用油脂铅笔的故事板到基于节点

  • Java实现文件上传到服务器本地并通过url访问的方法步骤

    目录 一.场景 二.SpringBoot默认静态资源访问方式 三.上传的文件应该存储在哪?怎么访问? 1.文件存储在哪? 2.怎么访问? 四.测试 五.总结 一.场景 Java实现文件上传到服务器本地,并通过url访问 有个需求,前端上传文件,需要用开关的方式同时支持上传七牛和服务器本地,方便不同的用户需求合理分配资源.本篇主要介绍文件上传到本地,然后通过url访问. 二.SpringBoot默认静态资源访问方式 首先想到的就是可以通过SpringBoot通常访问静态资源的方式,当访问:项目根路

随机推荐