<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我的人生路  
    日歷
    <2005年7月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456
    統(tǒng)計(jì)
    • 隨筆 - 74
    • 文章 - 57
    • 評(píng)論 - 7
    • 引用 - 0

    導(dǎo)航

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    顏色

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

     
    在 ASP 程序中,我們需要對(duì)文件進(jìn)行操作,常常會(huì)利用到 FSO 組件,而很多人對(duì)此不是很了解,所以想到開(kāi)設(shè)這個(gè)專題,用來(lái)收集 FSO 相關(guān)的介紹資料。歡迎大家補(bǔ)充并進(jìn)行討論。

    FileSystemObject 對(duì)象模型

    QUOTE
    FileSystemObject (FSO) 對(duì)象模型,允許對(duì)大量的屬性、方法和事件,使用較熟悉的 object.method 語(yǔ)法,來(lái)處理文件夾和文件。

    使用這個(gè)基于對(duì)象的工具和:

    HTML 來(lái)創(chuàng)建 Web 頁(yè)
    Windows Scripting Host 來(lái)為 Microsoft Windows 創(chuàng)建批文件
    Script Control 來(lái)對(duì)用其他語(yǔ)言開(kāi)發(fā)的應(yīng)用程序提供編輯腳本的能力
    因?yàn)樵诳蛻舳耸褂?FSO 而引起重要的安全性問(wèn)題,提供潛在地不受歡迎的對(duì)客戶端本地文件系統(tǒng)的訪問(wèn),假定本文檔使用 FSO 對(duì)象模型,來(lái)創(chuàng)建由服務(wù)器端的 Internet Web 頁(yè)執(zhí)行的腳本。因?yàn)槭褂昧朔?wù)器端,Internet Explorer 默認(rèn)安全設(shè)置不允許客戶端使用 FileSystemObject 對(duì)象。覆蓋那些默認(rèn)值可能會(huì)引起在本地計(jì)算機(jī)上不受歡迎的對(duì)其文件系統(tǒng)的訪問(wèn),從而導(dǎo)致文件系統(tǒng)完整性的全部破壞,同時(shí)引起數(shù)據(jù)遺失或更糟的情況。

    FSO 對(duì)象模型使服務(wù)器端的應(yīng)用程序能創(chuàng)建、改變、移動(dòng)和刪除文件夾,或探測(cè)特定的文件夾是否存在,若存在,還可以找出有關(guān)文件夾的信息,如名稱、被創(chuàng)建或最后一次修改的日期,等等。

    FSO 對(duì)象模型還使文件處理變得很容易。在處理文件時(shí),主要的目標(biāo)是以易于訪問(wèn)的格式把數(shù)據(jù)存儲(chǔ)在有效的空間和資源中。這就要求能夠創(chuàng)建文件,插入和改變數(shù)據(jù),以及輸出(讀取)數(shù)據(jù)。因?yàn)榘褦?shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,如 Access 或 SQL 服務(wù)器,會(huì)給應(yīng)用程序增加很大的開(kāi)銷,所以把數(shù)據(jù)存儲(chǔ)在二進(jìn)制或文本文件中可能是最有效的解決方案。可能不希望有該開(kāi)銷,或者數(shù)據(jù)訪問(wèn)要求可能不需要與功能完備的數(shù)據(jù)庫(kù)相關(guān)聯(lián)的所有額外功能。

    包含在 Scripting 類型庫(kù) (Scrrun.dll) 中的 FSO 對(duì)象模型,支持通過(guò) TextStream 對(duì)象來(lái)創(chuàng)建和操作文本文件。雖然還不支持二進(jìn)制文件的創(chuàng)建或操作,但計(jì)劃將來(lái)要支持二進(jìn)制文件。


    摘自 Windows 腳本手冊(cè)。

    相關(guān)資料:
    Windows 腳本手冊(cè) 下載


    --------------------
    純白色
    云娜音樂(lè)
    54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
    User is offlineProfile CardPM
    Go to the top of the page
    +Quote Post
    不學(xué)無(wú)術(shù)
    post Apr 3 2005, 05:43 AM
    發(fā)表于: #2


    論壇管理員
    *********

    用戶組: 管理員
    發(fā)表總數(shù): 3,801
    注冊(cè)日期: 1-March 03
    來(lái)自: 天地人間
    會(huì)員編號(hào): 24



    三種禁用 File System Object 組件的方法

    眾所周知,F(xiàn)ileSystemObject組件的強(qiáng)大功能及破壞性是它屢屢被免費(fèi)主頁(yè)提供商(那些支持ASP)的禁用的原因,我整理了一下,本來(lái)只找到兩種方法,后來(lái)被某人一刺激,硬是想到第三種不為人所知的方法,呵呵,也不知道是不是這樣的。

    第一種:用 RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll (win98路徑)來(lái)注銷該組件。此方法過(guò)于狠毒,屬于同歸于盡的方法,大家都沒(méi)得用,是下招。

    第二種:修改 Progid 的值,在 ASP 里調(diào)用組件的方式通常是 Set 對(duì)象名 = Server.CreateObject("Progid"),這時(shí)候我們就可以通過(guò)修改注冊(cè)表中的 Progid 值從達(dá)到禁用該組件的方法。在 開(kāi)始-運(yùn)行中敲入 regedit,然后找到 HKEY_CLASSES_ROOT\Scripting.FileSystemObject,這時(shí)候我們就可以更改該P(yáng)rogid的值了,如改成 Scripting.FileSystemObject8 。這樣在ASP頁(yè)里就這樣調(diào)用了:
    CODE

    <%@ Language=Vbscript%>
    <%
    Set Fs=Server.CreateObject("Scripting.FileSystemObject8")
    %>

    (如果你前面沒(méi)有調(diào)用過(guò)該組件的話,則無(wú)須重啟,就可以看到效果了,否則請(qǐng)重啟后看效果。)

    這時(shí)候我們看看還是用原來(lái)的調(diào)用方法的結(jié)果:
    CODE
    <%@ Language=Vbscript%>
    <%
    Set Fs=Server.CreateObject("Scripting.FileSystemObject")
    %>

    這時(shí)候的運(yùn)行結(jié)果為:
    QUOTE
    服務(wù)器對(duì)象 錯(cuò)誤 'ASP 0177 : 800401f3'

    Server.CreateObject 失敗

    /aspimage/testfile2.asp, 行3

    800401f3

    (OK,達(dá)到我們的要求)

    該方法由于本人遲了兩步,結(jié)果就讓別人搶著回答了,這樣極大的刺激了我,結(jié)果就產(chǎn)生了第三種方法。

    第三種:細(xì)心的高手們會(huì)想,既然能通過(guò)修改Progid值來(lái)禁用該組件,那 Clsid 是否也可以來(lái)修改呢?(OK,你想得和我一樣)我們知道,除了 CreateObject 方法以外,也可以使用一般的<object>標(biāo)注建立一個(gè)組件,我們可以在ASP里面使用 HTM L的 <object> 標(biāo)注,以便在網(wǎng)頁(yè)中加入一個(gè)組件。方法是:
    CODE
    <object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj
    ect"></object>

    Runat 表示是在服務(wù)端執(zhí)行,Scope 表示組件的生命周期,可以選用Session, Application 或 page (表示當(dāng)前頁(yè)面,也可缺省)。

    這種寫法對(duì)我們沒(méi)用,還有一種寫法是:
    CODE
    <object runat=server id=fs1 scope=page classid="clsid:clsid的值"></object>

    我們也可以通過(guò)修改該Clsid的值而禁用該組件,如將注冊(cè)表中 HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID 的值 0D43FE01-F093-11CF-8940-00A0C9054228 改成 0D43FE01-F093-11CF-8940-00A0C9054229 (改了最后面一位),這時(shí)候的寫法為:
    CODE
    <object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054229"></object>

    看運(yùn)行結(jié)果,沒(méi)問(wèn)題,OK。這時(shí)候我們?cè)儆茫?BR>
    CODE
    <object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
    CF-8940-00A0C9054228"></object>

    這時(shí)候就出錯(cuò)了。

    新建一用戶:iusr_domain
    IIS里設(shè)置對(duì)應(yīng)站點(diǎn)的匿名用戶 IUSR_DOMAIN
    CACLS: 設(shè)置目錄權(quán)限

    這樣FSO可用,但不會(huì)影響別人。

    作者:未知
    來(lái)源:http://www.7880.com/Info/Article-a1be400.html


    --------------------
    純白色
    云娜音樂(lè)
    54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
    User is offlineProfile CardPM
    Go to the top of the page
    +Quote Post
    不學(xué)無(wú)術(shù)
    post Apr 3 2005, 06:08 AM
    發(fā)表于: #3


    論壇管理員
    *********

    用戶組: 管理員
    發(fā)表總數(shù): 3,801
    注冊(cè)日期: 1-March 03
    來(lái)自: 天地人間
    會(huì)員編號(hào): 24



    使用 FSO 把文本信息導(dǎo)入數(shù)據(jù)庫(kù)

    在開(kāi)發(fā)WEB應(yīng)用程序中,我們經(jīng)常需要對(duì)文件系統(tǒng)中的驅(qū)動(dòng)器、文件夾和文件進(jìn)行處理,比如收集驅(qū)動(dòng)器的相關(guān)信息;創(chuàng)建、添加、移動(dòng)或刪除文件夾和文件等。在VB6中新提供了一套稱為FSO(File System Object)對(duì)象模型來(lái)對(duì)文件系統(tǒng)進(jìn)行訪問(wèn)處理。該模型提供了一個(gè)基于對(duì)象的工具,通過(guò)它所提供的一系列屬性和方法,我們可以在應(yīng)用程序中更簡(jiǎn)單、靈活地對(duì)文件系統(tǒng)進(jìn)行各種操作。

    一、FSO簡(jiǎn)介

      FSO 對(duì)象模型包含以下幾種對(duì)象:

      Drive 對(duì)象:允許收集系統(tǒng)物理或通過(guò) LAN 與系統(tǒng)邏輯連接的硬盤、CD-ROM 等驅(qū)動(dòng)器的可用空間、共享名等信息。

      Folder 對(duì)象:允許創(chuàng)建、刪除或移動(dòng)文件夾,并向系統(tǒng)查詢文件夾的名稱、路徑等。

      Files 對(duì)象:允許創(chuàng)建、刪除或移動(dòng)文件,并向系統(tǒng)查詢文件的名稱、路徑等。

      TextStream 對(duì)象:允許創(chuàng)建和讀寫文本文件。

      FileSystemObject 對(duì)象:提供一整套用于驅(qū)動(dòng)器、文件夾和文件操作的方法,在功能上可以把它看作是上面幾個(gè)對(duì)象的集合并且經(jīng)常與它們配合使用。與該對(duì)象相關(guān)聯(lián)的很多方法重復(fù)了前面四個(gè)對(duì)象中的方法,因此我們既可以通過(guò) FileSystemObject 對(duì)象來(lái)對(duì)驅(qū)動(dòng)器、文件夾和文件進(jìn)行大多數(shù)操作,也可以通過(guò)對(duì)應(yīng)的驅(qū)動(dòng)器、文件夾或文件對(duì)象對(duì)這些組件進(jìn)行操作。FSO 模型通過(guò)兩種方法實(shí)現(xiàn)對(duì)同一對(duì)象的操作,其操作效果是相同的,提供這種冗余功能的目的是為了實(shí)現(xiàn)最大的編程靈活性。

    在這篇文章中,我們將講解利用 FSO 對(duì)象模型的 TextStream 對(duì)象對(duì)文本文件的操作。

    (一) 用 FileSystemObject 來(lái)獲取文本文件對(duì)象

      1.創(chuàng)建一個(gè) FileSystemObject 對(duì)象實(shí)例

    要進(jìn)行文件操作,首先必須創(chuàng)建一個(gè) FileSystemObject 對(duì)象實(shí)例,用來(lái)創(chuàng)建或打開(kāi)一個(gè)文件.創(chuàng)建一個(gè) FileSystemObject 對(duì)象實(shí)例的具體格式為(以AFileSystemObject)為例:
    CODE
    Set AFileSystemObject = CreateObject("Scripting.FileSystemObjecct")


      2.用 FileSystemObject 來(lái)獲取文本文件對(duì)象 TextStream

    FileSystemObject 提供了兩種方法用于獲取文本文件對(duì)象 TextStream,其中用于創(chuàng)建文件的是 CreateTextFile,用于打開(kāi)已存在文件的是 OpenTextFile,兩種方法的返回結(jié)果都是一個(gè) TextStream 對(duì)象的實(shí)例,利用該對(duì)象可以進(jìn)行文件的具體操作。

    ⑴ 創(chuàng)建一個(gè)新文件

      創(chuàng)建新文件的方法的具體格式為(以AFileSystemObject為例):
      
    CODE
    AFilesystemObject.CreateTextFile(NewFileName, OverwriteExistingFile, IsUnicode)

    其中:
      NewFileName 是一個(gè)string值,指定要建立的文件的名稱,通常為文件的實(shí)際路徑加文件名稱,如 C:\webshare\aspsamp\filetest.txt 。

      OverwriteExistingFile 是一個(gè)Boolean值,表示如果有同名文件存在時(shí)是否覆蓋原來(lái)的文件。該參數(shù)可以省略,缺省時(shí)為 False,即不覆蓋原來(lái)文件。

      IsUnicode 是一個(gè)Boolean值,表示要建立的文件是ASCII文件還是Unicode文件,該參數(shù)可以省略,缺省時(shí)為 False,即為 ASCII 文件。

    ⑵ 打開(kāi)已存在的文件

      打開(kāi)已存在文件的方法的具體格式為(以AFileSystemObject為例):
      
    CODE
    AFilesystemObject.OpenTextFile(FileName, IOMode, create, format)

    其中:
      FileName 是一個(gè)string值,指定要打開(kāi)的文件的名稱,通常為文件的實(shí)際路徑加文件名稱,C:\filepath\test.txt 。

      IOMode 是常數(shù)值,表示打開(kāi)文件的目的,F(xiàn)orReading(1)表示用于讀取數(shù)據(jù);ForAppending 表示用于增加數(shù)據(jù).該參數(shù)可以省略,缺省時(shí)為 ForReading。

      Create 是一個(gè)Boolean值,表示要打開(kāi)的文件不存在時(shí)是否創(chuàng)建新文件,
    該參數(shù)可以省略,缺省時(shí)為False,即不創(chuàng)建新文件。

      Format 表示文件打開(kāi)的方式.其可能的值及含義如下:
    TristateTrue:以 Unicode 的方式打開(kāi).
    TristateFalse:以 ASCII 的方式打開(kāi).
    TristateUseDefault:以系統(tǒng)默認(rèn)的方式打開(kāi).

    該參數(shù)可以省略,缺省時(shí)為 TristateFalse ,即ASCII方式。

    (二).用 TextStream 進(jìn)行文件操作

      在建立或打開(kāi)了文件之后,就可利用對(duì)象 TextStream 提供的方法進(jìn)行文件的實(shí)際操作了。

      1.用于寫操作的方法有:

    ⑴ Write(string)
      將由 string 指定的字符串寫入到文件中。

    ⑵ WriteLine(string)
      在文件中寫入由 string 指定的字符串,并寫入一個(gè)換行字符。
      參數(shù)string 可以省略,此時(shí)將在文件中插入一個(gè)空行。

    ⑶ WriteBlankLines(NumOfLines)
      在文件中插入若干空行,行數(shù)由 NumOfLines 指定。

      2.用于讀操作的方法和屬性方法有:

    ⑴ AtEndOfLine
      該屬性是一個(gè) Boolean 值,表示文件指針是否已指向當(dāng)前行的行尾。

    ⑵ AtEndOfStream
      該屬性是一個(gè) Boolean 值,表示文件指針是否已指向文件尾。

    ⑶ Column
      該屬性是一個(gè)整數(shù)值,表示文件指針在當(dāng)前行中的位置。

    ⑷ Line
      該屬性是一個(gè)整數(shù)值,表示文件指針?biāo)谛械男刑?hào)。

    ⑸ Read(NumOfCharacters)
      該方法從文件當(dāng)前位置開(kāi)始,讀入由NumOfCharacters數(shù)目指定的若干字符,返回一個(gè)字符串。

    ⑹ ReadLine
      該方法從文件當(dāng)前位置開(kāi)始,讀入當(dāng)前行的內(nèi)容直到行尾,返回一個(gè)字符串。

    ⑺ ReadAll
      該方法從當(dāng)前位置開(kāi)始,讀入整個(gè)文件的內(nèi)容直到文件結(jié)束,返回一個(gè)字符串。

    ⑻ Skip(NumOfCharacters)
      該方法從文件當(dāng)前位置開(kāi)始,跳過(guò)由NumOfCharacters數(shù)目指定的若干字符。

    ⑼ SKipLine
      該方法從文件當(dāng)前位置開(kāi)始,跳過(guò)當(dāng)前行的內(nèi)容。

      3.用于關(guān)閉文件的方法有:

    ⑴ Close
      關(guān)閉已經(jīng)建立或打開(kāi)的文件。

    (三)、下面就以一個(gè)實(shí)例來(lái)說(shuō)明如何使用FSO來(lái)讀取文本文件和如何保存到數(shù)據(jù)庫(kù):

    1、 先創(chuàng)建一個(gè)讀取文件路徑的頁(yè)面:file.htm
    CODE

    <FORM METHOD=POST ACTION="upFile.asp" >
           <div align="center"> <br>
           <br>
           <br>
           <br>
           <input type="file" name="path" size="40">
           <INPUT TYPE="submit" name="dr" value="導(dǎo)入信息">
           </div>
    </FORM>


    2、 編寫把獲取到的文本值保存到數(shù)據(jù)庫(kù)代碼:upFile.asp
    CODE
    <%@Language="VBScript"%>
    <%Response.Buffer=true%>
    <!--#include file="adovbs.inc"-->
    <%
    strConn = "DSN=DataSourceName"
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open strConn
    Set ObjComm = Server.CreateObject("ADODB.Command")
    ObjComm.CommandText = "sp_AddMsg"         ‘調(diào)用存儲(chǔ)過(guò)程
    ObjComm.CommandType = adCmdStoredProc
    Set ObjComm.ActiveConnection = Conn

    ''''''''''創(chuàng)建輸入輸出參數(shù)'''''''''''''''''
    Set ObjParamECom=ObjComm.CreateParameter("WC_ECompanyName",adVarchar,adParamInput,100)
         ObjComm.Parameters.Append ObjParamECom
         '@in_ECompanyName      Varchar(50),                   --公司英文名稱

    Set ObjParamAddr=ObjComm.CreateParameter("WC_Address",adVarchar,adParamInput,200)
         ObjComm.Parameters.Append ObjParamAddr
         '@in_Address      Varchar(50),                   --公司地址

    Set ObjParamCity=ObjComm.CreateParameter("WC_City",adVarchar,adParamInput,100)
         ObjComm.Parameters.Append ObjParamCity
         '@in_City     Varchar(50),                   --城市

    ''''''''''創(chuàng)建參數(shù)完畢''''''''''''''''''''
    %>
    <%
    Dim AllText, strLine1, strLine2, strLine3
    Dim strpath, fileurl

    fileurl = ""

    strpath=Trim(Request.form("path"))

    fileurl=strpath

    Set FSO = CreateObject("Scripting.FileSystemObject")

    Set ATextStream = FSO.OpenTextFile(fileurl, 1, false, TristateFalse)

    '''''''''提取數(shù)據(jù)''''''''''''''''''''''''''''
    Do While Not ATextStream.AtEndOfStream

    ''''''初始化變量''''''''''''''''
    strLine1 = ""
    strLine2 = ""
    strLine3 = ""

    '''''''''''''''''''''''''''''''
      ATextStream.SkipLine
      ATextStream.Skip(11)
      strLine1 = Trim(ATextStream.ReadLine)
      ATextStream.Skip(11)
      strLine2 = Trim(ATextStream.ReadLine)
      ATextStream.Skip(5)
      strLine3 = Trim(ATextStream.ReadLine)
      …
    'End if

    ''''''''''將變量加入?yún)?shù)集'''''''''''''
    ObjParamECom.Value = strLine1
    ObjParamCCom.Value = strLine2
    ObjParamAddr.Value = strLine3


    ''''''''''操作結(jié)束''''''''''''''''''''

    ObjComm.Execute() '運(yùn)行命令

    Loop

    Response.Write("<br>" & "導(dǎo)入庫(kù)成功!<a href=dolist.html>[繼續(xù)導(dǎo)入]</a><br>")

    Set Conn = Nothing
    Set FSO = Nothing
    Set ATextStream = Nothing
    %>


    附:存儲(chǔ)過(guò)程sp_AddMsg代碼
    CODE
    CREATE PROCEDURE dbo.sp_AddMsg                 --導(dǎo)入國(guó)外企業(yè)信息
    (

      @in_CompanyName       Varchar(100),               --公司名稱
      @in_Address          Varchar(200),                 --公司地址
      @in_City           Varchar(100),              --公司所在城市
      …
    )
    AS
    SET NOCOUNT ON
          BEGIN TRAN
               INSERT INTO Tb_WCLibrary(
                                WC_CompanyName,
                                WC_CCompanyName,
                                WC_Address,
                                …
                                   )
                  VALUES(
                             @in_CompanyName,
                             @in_CCompanyName,
                             @in_Address,
                             …
                              )
    IF @@ERROR <> 0
    BEGIN
    ROLLBACK TRAN
    RETURN -1
    END

    COMMIT TRAN

    RETURN 0

    SET NOCOUNT OFF


    至此,全文內(nèi)容講解結(jié)束,希望這篇文章能給讀者帶來(lái)一定的幫助。

    作者:未知
    來(lái)源:http://www.programfan.com/article/showarticle.asp?id=2328


    --------------------
    純白色
    云娜音樂(lè)
    54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
    User is offlineProfile CardPM
    Go to the top of the page
    +Quote Post
    不學(xué)無(wú)術(shù)
    post Apr 3 2005, 06:19 AM
    發(fā)表于: #4


    論壇管理員
    *********

    用戶組: 管理員
    發(fā)表總數(shù): 3,801
    注冊(cè)日期: 1-March 03
    來(lái)自: 天地人間
    會(huì)員編號(hào): 24



    ASP 中取得圖片寬度和高度的類(無(wú)組件)

    CODE
    <%
    Class ImgWHInfo '獲取圖片寬度和高度的類,支持JPG,GIF,PNG,BMP
       Dim ASO
       Private Sub Class_Initialize
           Set ASO = Server.CreateObject("ADODB.Stream")
           ASO.Mode = 3
           ASO.Type = 1
           ASO.Open
       End Sub
       Private Sub Class_Terminate
           Err.Clear
           Set ASO = Nothing
       End Sub

       Private Function Bin2Str(Bin)
           Dim I, Str
           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, I
           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, I
           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, I
           Ret = 0
           For I = 1 To LenB(Bin)
               Ret = Ret * 256 + AscB(MidB(Bin, I, 1))
           Next
           BinVal2 = Ret
       End Function
         
       Private Function GetImageSize(filespec)
           Dim bFlag
           Dim Ret(3)
           ASO.LoadFromFile(filespec)
           bFlag = ASO.Read(3)
           Select Case Hex(binVal(bFlag))
           Case "4E5089":
               ASO.Read(15)
               ret(0) = "PNG"
               ret(1) = BinVal2(ASO.Read(2))
               ASO.Read(2)
               ret(2) = BinVal2(ASO.Read(2))
           Case "464947":
               ASO.read(3)
               ret(0) = "gif"
               ret(1) = BinVal(ASO.Read(2))
               ret(2) = BinVal(ASO.Read(2))
           Case "535746":
               ASO.read(5)
               binData = ASO.Read(1)
               sConv = Num2Str(ascb(binData), 2 , 8)
               nBits = Str2Num(left(sConv, 5), 2)
               sConv = mid(sConv, 6)
               While(len(sConv) < nBits * 4)
                   binData = ASO.Read(1)
                   sConv = sConv&Num2Str(AscB(binData), 2 , 8)
               Wend
               ret(0) = "SWF"
               ret(1) = Int(Abs(Str2Num(Mid(sConv, 1 * nBits+1, nBits), 2) - Str2Num(Mid(sConv, 0 * nBits + 1, nBits), 2)) / 20)
               ret(2) = Int(Abs(Str2Num(Mid(sConv, 3 * nBits + 1, nBits), 2) - Str2Num(Mid(sConv, 2 * nBits + 1, nBits), 2)) / 20)
           Case "FFD8FF":
               Do  
               Do : p1 = binVal(ASO.Read(1)) :  Loop While p1 = 255 And Not ASO.EOS
               If p1 > 191 And p1 < 196 Then Exit Do Else ASO.read(binval2(ASO.Read(2)) - 2)
               Do : p1 = binVal(ASO.Read(1)) : Loop While p1 < 255 And Not ASO.EOS
               Loop While True
               ASO.Read(3)
               ret(0) = "JPG"
               ret(2) = binval2(ASO.Read(2))
               ret(1) = binval2(ASO.Read(2))
           Case Else:
               If left(Bin2Str(bFlag), 2) = "BM" Then
                   ASO.Read(15)
                   ret(0) = "BMP"
                   ret(1) = binval(ASO.Read(4))
                   ret(2) = binval(ASO.Read(4))
               Else
                   ret(0) = ""
               End If
           End Select
           ret(3) = "width = """ & ret(1) & """ height = """ & ret(2) & """"
           getimagesize=ret
       End Function
         
       Public Function imgW(IMGPath)
           Dim FSO,IMGFile,FileExt,Arr
           Set FSO = Server.CreateObject("Scripting.FileSystemObject")
           If (FSO.FileExists(IMGPath)) Then
               Set IMGFile = FSO.GetFile(IMGPath)
               FileExt = FSO.GetExtensionName(IMGPath)
               Select Case FileExt
                   Case "gif", "bmp", "jpg", "png":
                   Arr = GetImageSize(IMGFile.Path)
                   imgW = Arr(1)
               End Select
               Set IMGFile = Nothing
           Else
               imgW = 0
           End If    
           Set FSO = Nothing
       End Function
       
       Public Function imgH(IMGPath)
           Dim FSO, IMGFile, FileExt, Arr
           Set FSO = server.CreateObject("Scripting.FileSystemObject")
           If (FSO.FileExists(IMGPath)) Then
               Set IMGFile = FSO.GetFile(IMGPath)
               FileExt = FSO.GetExtensionName(IMGPath)
               Select Case FileExt
                   Case "gif", "bmp", "jpg", "png":
                   Arr = getImageSize(IMGFile.Path)
                   imgH = Arr(2)
               End Select
               Set IMGFile = Nothing
           Else
               imgH = 0
           End If    
           Set FSO = Nothing
       End Function
    End Class

    IMGPath = "Test.jpg"

    Set PP = New ImgWHInfo  
    W = PP.imgW(Server.Mappath(IMGPath))  
    H = PP.imgH(Server.Mappath(IMGPath))
    Set pp = Nothing

    Response.Write("<img src='" & IMGPath & "' border=0><br>寬:" & W & ";高:" & H)
    %>


    作者:未知
    來(lái)源:http://www.programfan.com/article/showarticle.asp?id=2664


    --------------------
    純白色
    云娜音樂(lè)
    54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com
    User is offlineProfile CardPM
    Go to the top of the page
    +Quote Post
    不學(xué)無(wú)術(shù)
    post Apr 3 2005, 06:29 AM
    發(fā)表于: #5


    論壇管理員
    *********

    用戶組: 管理員
    發(fā)表總數(shù): 3,801
    注冊(cè)日期: 1-March 03
    來(lái)自: 天地人間
    會(huì)員編號(hào): 24



    使用 FSO 進(jìn)行搜索

       建立搜索引擎的關(guān)鍵是遞歸。主要地,編寫一段代碼搜索目錄下的文件,然后對(duì)所有的目錄循環(huán)執(zhí)行同樣的代碼。因?yàn)椴荒艽_定總共有多少個(gè)子目錄,所以必須一遍又一遍地執(zhí)行搜索代碼,直到結(jié)束。遞歸調(diào)用非常好!

       下面來(lái)創(chuàng)建搜索頁(yè)面。假設(shè)已經(jīng)建立了一個(gè)HTML表單,用戶在其中輸入一個(gè)搜索字符串。
    CODE
    Dim objFolder
    Dim strSearchText
    Dim objFSO

    strSearchText = Request.Form("SearchText")    'The search string
    'create the FSO and Folder objects
    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(Server.MapPath("/"))

    Search objFolder


       上面的代碼簡(jiǎn)單地初始化變量,Search函數(shù)執(zhí)行搜索功能,描述如下:
    CODE
    Function Search(objFolder)
     Dim objSubFolder

     'loop through every file in the current folder
     For Each objFile in objFolder.Files
       Set objTextStream = objFSO.OpenTextFile(objFile.Path,1) < -- For Reading
           'read the file‘s contents into a variable
           strFileContents = objTextStream.ReadAll

           'if the search string is in the file, then write a link
           'to the file

           If InStr(1, strFileContents, strSearchText, 1) Then
              Response.Write("< A HREF=""/" & objFile.Name & """>" & objFile.Name & "< /A>< BR>")
              bolFileFound = True
           End If

           objTextStream.Close
     Next

     'Here is the recursion part - for each
     'subfolder in this directory, run the Search function again

     For Each objSubFolder In objFolder.SubFolders
           Search objSubFolder
     Next

    End Function


       為了能打開(kāi)文件,F(xiàn)SO需要實(shí)際的文件路徑,而不是web路徑。比如,是c:\inetpub\wwwroot\empindex.htm,而不是 www.enfused.com/temp/index.html 或者 /temp/index.html。為了將后者轉(zhuǎn)換為前者,使用 Server.MapPath("filename"),filename 表示 web 路徑名。

       上面的代碼將在你指定的初始目錄下的文件夾的每一個(gè)子目錄中執(zhí)行,在這里,初始目錄是指web根目錄“/”。然后就簡(jiǎn)單地打開(kāi)目錄下的每一個(gè)文件,看看其中是否包含指定的字符串,如果找到字符串就顯示那個(gè)文件的鏈接。

       注意,隨著文件和子目錄數(shù)量的增加,搜索花費(fèi)的時(shí)間也將增加。如果需要繁重的搜索工作,建議你采取其他的方法,比如微軟公司的索引服務(wù)器 Index Server。


    歡迎大家訪問(wèn)我的個(gè)人網(wǎng)站 萌萌的IT人
    posted on 2005-07-01 16:34 一天一點(diǎn)愛(ài)戀 閱讀(387) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
     
    Copyright © 一天一點(diǎn)愛(ài)戀 Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 女bbbbxxxx另类亚洲| 久久久久亚洲精品中文字幕| 免费福利网站在线观看| 18禁黄网站禁片免费观看不卡| AAA日本高清在线播放免费观看| 巨胸狂喷奶水视频www网站免费| 一级午夜a毛片免费视频| 亚洲国产综合精品一区在线播放| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 一个人免费视频在线观看www| 久久www免费人成精品香蕉| 五月婷婷免费视频| 美女无遮挡拍拍拍免费视频| 97在线免费观看视频| 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 四虎在线播放免费永久视频| 亚洲国产精品尤物yw在线| 精品亚洲成α人无码成α在线观看| 久久久久亚洲精品天堂久久久久久 | a视频在线免费观看| 一级毛片免费观看不卡视频| 最好看最新的中文字幕免费| 五月婷婷综合免费| 黑人粗长大战亚洲女2021国产精品成人免费视频| 午夜视频免费观看| 亚洲Av无码乱码在线znlu| 亚洲熟妇av一区二区三区漫画 | 在线视频免费观看高清| 免费看美女被靠到爽| 亚洲国产成人久久一区WWW| 久久亚洲国产中v天仙www| 亚洲视屏在线观看| 亚洲精品无码高潮喷水A片软| 老司机午夜精品视频在线观看免费 | 亚洲人成电影网站| 亚洲欧洲无码AV不卡在线| 人妖系列免费网站观看| 久久久久免费看黄a级试看| 69成人免费视频无码专区| 亚洲国产成人爱av在线播放| 亚洲人成电影在线天堂|