隨筆 - 8  文章 - 55  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          朋友的Blog

          最新評論

          閱讀排行榜

          評論排行榜

          主題: [asp]直接保存URL圖像或網頁到服務器本地的類~~
          V37

          雨夢秋風
          積分:5555
          發貼:1670
          來自:任何地方
          注冊:2001-12-01
          返回頁首返回頁首 | 樓層:1 ?發表于 2003-09-09 07:23:18??資料郵件主頁收藏悄悄話搜索引用舉報不良信息
          click for full size

          <% @ 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,"http://","/")
          ????????????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%>> 二進制數據
          &nbsp;&nbsp;&nbsp;<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>

          [這消息被V37編輯過(編輯時間2003-09-09 07:28:50)]
          [這消息被V37編輯過(編輯時間2003-09-09 09:30:34)]

          Blueidea Web Team
          非一所思~~
          PaintBlue.NET

          V37

          雨夢秋風
          積分:5555
          發貼:1670
          來自:任何地方
          注冊:2001-12-01
          返回頁首返回頁首 | 樓層:2 ?發表于 2003-09-09 07:24:52??資料郵件主頁悄悄話搜索引用舉報不良信息
          將上面代碼保存問任一個擴展名是 asp的文件
          如saveXMLHTTP.asp
          ~~即可運行
          用法如下:
          '=========調用方法===========
          '注意該部分的代碼均不能改變變量命名,與類里去屬性是相關的

          dim imgUp '傳輸對象
          dim GetStrUrl '要獲取的圖像或網頁URL
          dim iSaveName '要保存的名字
          dim iSavePath '要保存的虛擬路徑
          dim iSaveMode '保存的模式 1 為圖像 0 為任意文件
          iSavePath="./temp/" 可以為 "" 不輸入
          iSaveName="myimgf" 可以為 "" 不輸入
          GetStrUrl="http://www.blueidea.com/img/common/logo.gif"
          iSaveMode=trim(request.form("SaveMode")) '保存模式 "1" 圖像 "2" 文本 "0" 二進制 注意是字符串型的
          調用函數
          CALL saveUpload(GetStrUrl,iSavePath,iSaveName,iSaveMode)
          ====================
          '傳輸類的使用方法
          '圖象上傳和上傳信息獲取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 '保存模式 "1" 圖像 "2" 文本 "0" 二進制 注意是字符串型的
          '方法:
          'imgUp.saveImg(fullpath) '保存圖像文件
          posted on 2006-06-04 11:23 blog搬家了--[www.ialway.com/blog] 閱讀(442) 評論(0)  編輯  收藏 所屬分類: FMS
          主站蜘蛛池模板: 黑河市| 嘉兴市| 和政县| 堆龙德庆县| 富顺县| 和林格尔县| 北宁市| 灌云县| 修武县| 益阳市| 福安市| 时尚| 石泉县| 海南省| 巴彦淖尔市| 甘德县| 赤壁市| 东乌珠穆沁旗| 东城区| 镇坪县| 永春县| 洪雅县| 阜阳市| 平果县| 庄河市| 郎溪县| 乐至县| 湄潭县| 伊宁县| 谢通门县| 平遥县| 襄汾县| 突泉县| 高平市| 金平| 谢通门县| 兰州市| 郴州市| 垦利县| 乌海市| 于田县|