在ASP中,F(xiàn)SO的意思是File System Object,即文件系統(tǒng)對(duì)象。
我們將要操縱的計(jì)算機(jī)文件系統(tǒng),在這里是指位于web服務(wù)器之上。所以,確認(rèn)你對(duì)此擁有合適的權(quán)限。理想情況下,你可以在自己的機(jī)器上建立一個(gè)web服務(wù)器,這樣就能方便地進(jìn)行測(cè)試。如果運(yùn)行于Windows平臺(tái),請(qǐng)?jiān)囈辉囄④浌镜拿赓M(fèi)個(gè)人Web服務(wù)器PWS。
FSO 模型對(duì)象
Drive Object:驅(qū)動(dòng)器對(duì)象 供存取磁盤或者網(wǎng)絡(luò)驅(qū)動(dòng)器
FileSystemObject Object:文件系統(tǒng)對(duì)象 供存取計(jì)算機(jī)的文件系統(tǒng)
Folder Object:文件夾對(duì)象 供存取文件夾的所有屬性
TextStream Object:文本流對(duì)象 供存取文件內(nèi)容
你可以使用上面的對(duì)象做計(jì)算機(jī)上的任何事情,也包括破壞活動(dòng) ;-( 所以,請(qǐng)小心使用FSO。在web環(huán)境中,存儲(chǔ)信息是非常重要的,比如用戶信息,日志文件,等等。FSO提供了一個(gè)強(qiáng)大且簡(jiǎn)單的方法高效率地保存數(shù)據(jù)。在這篇文章里面,著重討論FileSystemObject和TextStream對(duì)象。
FSO由微軟公司提供支持,對(duì)于非Windows系統(tǒng),大概不能再使用ASP。
怎么樣使用FSO?
為了使用FSO來執(zhí)行所有的工作,首先要?jiǎng)?chuàng)建對(duì)象,代碼就象下面這樣:
< %
Set fso = Server.CreateObject("Scripting.FileSystemObject")
% >
這樣就建立了FSO并且賦予變量fso,接著就可以使用熟悉的object.method語法來執(zhí)行文件系統(tǒng)的操作〔查看Visual Basic文檔,獲取更多的關(guān)于對(duì)象和對(duì)象向?qū)Ь幊痰闹R(shí)〕。在這里,我們可以使用fso.method 或者 fso.property,這些將在下面的例子中看到。
FSO模型位于由微軟提供的腳本運(yùn)行時(shí)間DLL文件中,它是scrrun.dll。你可以在任何應(yīng)用程序中引用這個(gè)DLL文件,比如MS Access,Word。 就是說,并非僅僅限制在ASP中應(yīng)用它。
這里有一個(gè)簡(jiǎn)要的FSO方法列表:
FSO方法
CopyFile 拷貝一個(gè)或者多個(gè)文件到新路徑
CreateTextFile 創(chuàng)建文件并且返回一個(gè)TextStream對(duì)象
DeleteFile 刪除一個(gè)文件
OpenTextFile 打開文件并且返回TextStream對(duì)象,以便讀取或者追加
如果想了解完整的FSO方法與屬性,請(qǐng)查閱微軟MSDN。下面來看幾個(gè)例子。
假設(shè)你想創(chuàng)建一個(gè)簡(jiǎn)單的留言簿,你可以建立一個(gè)數(shù)據(jù)庫,在其中存儲(chǔ)用戶的信息。然而,如果并不需要數(shù)據(jù)庫的強(qiáng)大功能,使用FSO來存儲(chǔ)信息將節(jié)省你的時(shí)間和金錢。并且,一些ISP也許限制了web上的數(shù)據(jù)庫應(yīng)用。
假設(shè)你在一個(gè)表單中收集了一些用戶信息,這里是一個(gè)簡(jiǎn)單表單HTML代碼:
< html>
< body>
< form action="formhandler.asp" method="post">
< input type="text" size="10" name="username">
< input type="text" size="10" name="homepage">
< input type="text" size="10" name="Email">
< /form>
< /body>
< /html>
再看看formhandler.asp中處理表單的代碼:
< %
' Get form info
strName = Request.Form("username")
strHomePage = Request.Form("homepage")
strEmail = Request.Form("Email")
' create the fso object
Set fso = Server.CreateObject("Scripting.FileSystemObject")
迄今為止,還沒有新鮮的東西,無非是獲取表單域的值并且賦值到變量。下面出現(xiàn)了有趣的部分 - 寫文件:
path = "c: emp est.txt"
ForReading = 1, ForWriting = 2, ForAppending = 3
' open the file
set file = fso.opentextfile(path, ForAppending, TRUE)
' write the info to the file
file.write(strName) & vbcrlf
file.write(strHomePage) & vbcrlf
file.write(strEmail) & vbcrlf
' close and clean up
file.close
set file = nothing
set fso = nothing
回想一下,OpenTextFile方法返回一個(gè)TextStream對(duì)象,它是FSO模型中的另外一個(gè)對(duì)象。TextStream對(duì)象揭示了操作文件內(nèi)容的方法,比如寫、讀一行、跳過一行。VB常量vbcrlf產(chǎn)生一個(gè)換行符。
在OpentextFile的命令參數(shù)中定義了TRUE,這就告訴了系統(tǒng),如果文件不存在,就創(chuàng)建它。如果文件不存在,并且沒有定義TRUE參數(shù),就會(huì)出錯(cuò)。
現(xiàn)在轉(zhuǎn)到目錄c: emp,打開test.txt,你可以看到如下的信息:
User's name
User's home page
User's email
當(dāng)然,這些單詞可以被輸入在表單中的任何內(nèi)容所替換。
現(xiàn)在已經(jīng)有了一些用戶信息保存在文件中,就像一個(gè)簡(jiǎn)單的數(shù)據(jù)庫。假設(shè)有一個(gè)用戶想了解所有的訪問者,就要從登
記的信息中分離出相關(guān)部分,因?yàn)闆]有象數(shù)據(jù)庫一樣擁有結(jié)構(gòu)化的列。
我們知道,在所創(chuàng)建的文件中,第1行是用戶名,第2行是他們的主頁,第3行是他們的電子郵件地址。隨后登記的用
戶也是按照這樣的結(jié)構(gòu)存儲(chǔ)他們的信息,所以每3行將包含一個(gè)用戶的登記信息。知道了這些,就可以編寫下面的代碼來顯
示信息:
< %
' create the fso object
set fso = Server.Createobject("Scripting.FileSystemObject")
path = "c: emp est.txt"
' open the file
set file = fso.opentextfile(path, 1) < -- For
reading
接著,分析每一行,并且格式化數(shù)據(jù):
do until file.AtEndOfStream
Response.write("Name: " & file.ReadLine & " ")
Response.write("Home Page: " & file.ReadLine & " ")
Response.write("Email: " & file.ReadLine & "< p>")
loop
' close and clean up
file.close
set file = nothing
set fso = nothing
%>
這里僅僅做了一個(gè)非常簡(jiǎn)單的輸出,但是你可以根據(jù)情況包含表格或者DHTML表單信息。
如果已經(jīng)正確地建立并寫入了文件,上面的小小循環(huán)將合適地列出數(shù)據(jù)庫中的每一個(gè)人的信息。ReadLine方法讀取1
行內(nèi)容,直到遇到換行符,隨后的ReadLine調(diào)用將讀取下一行。AtEndOfStream是TextStream對(duì)象的屬性,它告訴我們何時(shí)
遇到文件的尾部。
假設(shè)由于某種原因,我們沒有正確地形成文件,如果一個(gè)用戶只有2行信息而不是3行,那么就會(huì)產(chǎn)生一些錯(cuò)誤。我們
這里的循環(huán)取回文件中的下3行信息,如果沒有3行多的信息,就將出現(xiàn)如下的錯(cuò)誤信息:
Server object error 'ASP 0177 : 800a003e'
所以,一定要添加一些錯(cuò)誤處理代碼,以防文件中插入了多余的行或者少了必要的行信息。
上面討論了基本知識(shí),然后說說權(quán)限許可的問題。FSO以創(chuàng)建它的用戶帳戶權(quán)限運(yùn)行,換言之,如果有人從Internet
上訪問你的頁面,那么這個(gè)internet帳戶就創(chuàng)建FSO。如果以administrator的身份登錄計(jì)算機(jī),并且登錄頁面,那么
administrator帳戶就創(chuàng)建了FSO。這是非常重要的,因?yàn)橐欢ǖ膸魮碛幸欢ǖ臋?quán)限,并且FSO需要一些權(quán)限從而能完整的
執(zhí)行功能。
internet帳戶(IUSER_MachineName,MachineName是服務(wù)器的名字)一般只擁有讀權(quán)限,這意味著用戶將不能寫入留
言簿文件。然而,有幾個(gè)選擇可以繞過這個(gè)問題。
首先,也是很困難的,是要求用戶在填寫留言簿前登錄到服務(wù)器。然而,留言簿的要點(diǎn)是從匿名用戶處收集信息,如
果要求用戶登錄,就必須要知道他們是誰。因此,跳過這個(gè)選擇,看下一個(gè)。
第2個(gè)方法是創(chuàng)建一個(gè)目錄或者文件,IUSER_MachineName用戶對(duì)此有寫權(quán)限。這樣做可能開放了一些潛在的安全漏
洞,因?yàn)槿魏沃勒_目錄并具備一定web技巧的人就能在服務(wù)器上填充內(nèi)容。這是一個(gè)很嚴(yán)重的禁忌。所以你必須確認(rèn)在
隱藏的場(chǎng)所保存了這些可寫目錄的信息,并且盡可能地將這些目錄設(shè)置在web目錄結(jié)構(gòu)以外(比如在Windows下,這是一個(gè)
不在inetpub目錄下的一個(gè)目錄)。
你也許想:好,現(xiàn)在我知道如何寫入文件了。但能做到更多一些嗎?下面來試一試為web站點(diǎn)建立一個(gè)搜索功能。
建立搜索引擎的關(guān)鍵是遞歸。主要地,編寫一段代碼搜索目錄下的文件,然后對(duì)所有的目錄循環(huán)執(zhí)行同樣的代碼。因
為不能確定總共有多少個(gè)子目錄,所以必須一遍又一遍地執(zhí)行搜索代碼,直到結(jié)束。遞歸調(diào)用非常好!
下面來創(chuàng)建搜索頁面。假設(shè)已經(jīng)建立了一個(gè)HTML表單,用戶在其中輸入一個(gè)搜索字符串。
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í)行搜索功能,描述如下:
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's 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
為了能打開文件,F(xiàn)SO需要實(shí)際的文件路徑,而不是web路徑。比如,是c:inetpubwwwroot empindex.html, 而不是
www.enfused.com/temp/index.html 或者 /temp/index.html。 為了將后者轉(zhuǎn)換為前者,使用Server.MapPath
("filename"), filename表示web路徑名。
上面的代碼將在你指定的初始目錄下的文件夾的每一個(gè)子目錄中執(zhí)行,在這里,初始目錄是指web根目錄“/”。然后
就簡(jiǎn)單地打開目錄下的每一個(gè)文件,看看其中是否包含指定的字符串,如果找到字符串就顯示那個(gè)文件的鏈接。
注意,隨著文件和子目錄數(shù)量的增加,搜索花費(fèi)的時(shí)間也將增加。如果需要繁重的搜索工作,建議你采取其他的方
法,比如微軟公司的索引服務(wù)器Index Server。
到此,你對(duì)FSO可能已經(jīng)有了很好的體會(huì)。讓我們?cè)偕钊胙芯恳徊剑瑏斫鉀Q更復(fù)雜的難題。
首先,你可能希望對(duì)文件改名。為了跟蹤所有的文檔,你將要重新命名它們以便唯一,這樣就可以被系統(tǒng)容易地區(qū)
別。很不幸,F(xiàn)SO不允許簡(jiǎn)單的文件改名操作,所以我們不得不修改一下。
< %
' create the fso object
set fso = Server.Createobject("Scripting.FileSystemObject")
path = "c: emp est.txt"
strDate = Replace(Date(), "/", "")
strDir = "c:inetpubwwwrootarticles" & strDate
strNewFileName = Hour(Now) & "_" & Minute(Now) & "_" &
second(Now) & ".html"
' open the old file
set file = fso.opentextfile(path, 1) < -- For reading
strText = file.readall
set file = nothing
' check for and/or create folder
if not fso.folderexists(Server.MapPath(strDir)) then
set f = fso.CreateFolder(Server.MapPath(strDir))
else
set f = fso.GetFolder(Server.MapPath(strDir))
end if
' create and write new file
set file = fso.Createtextfile(f.path & "" & strNewFileName)
file.write(strText)
set f = nothing
file.close
set file = nothing
' delete the old file
fso.DeleteFile(path & "" & rst("FileName") & i)
' clean up
set fso = nothing
%>
FSO能力的不足在這里卻成了優(yōu)勢(shì),我們可以一次執(zhí)行2步。首先,打開文件并讀入文件的內(nèi)容。假設(shè)這里要?jiǎng)?chuàng)建一個(gè)
唯一的文件夾和一個(gè)唯一的文件來存儲(chǔ)文章。然而,因?yàn)槲募A的路徑每天都將改變,所以必須首先檢查是否文件夾已經(jīng)
存在,如果不存在,就創(chuàng)建它。這在if not fso.folderexists代碼段完成。然后,取得那個(gè)路徑,創(chuàng)建一個(gè)新的文件。新
文件建立完成后,刪除掉舊文件,這通過fso.DeleteFile來完成。
這2步就是:對(duì)文件改名,然后移動(dòng)到一個(gè)更合適的目錄下。注意,在這里還可以對(duì)文件進(jìn)行更多地操作,比如在寫
入新文件前進(jìn)行一下內(nèi)容的編輯。
FSO確實(shí)存在一些弱點(diǎn) - 比如,它很難處理二進(jìn)制文件,這包括Word文檔、許多圖形格式的文件和其他一些文件。然而你仍然可以用其他的方式操作這些文件 - 移動(dòng)它們、刪除它們,等等。你不能做的就是對(duì)它們進(jìn)行打開或者寫操作。
另外一個(gè)限制是對(duì)于文件長(zhǎng)度的問題。當(dāng)立刻讀寫一些內(nèi)容時(shí),所有的信息都存儲(chǔ)在內(nèi)存中 - 內(nèi)容越多,消耗的內(nèi)存就越大。這將使每個(gè)工作都變得慢起來。所以,如果需要操作非常大的文件,或者大量的小文件時(shí),考慮將文件分割成小塊,并且經(jīng)常的清除內(nèi)存。將應(yīng)用程序融入進(jìn)COM對(duì)象組件,也能大大地提高程序的速度。
同樣,你也不能使用FSO來管理權(quán)限以及文件、文件夾的屬性,執(zhí)行安全加密的一個(gè)很好方法就是將前面提到的留言簿文件設(shè)置為只讀,在需要時(shí)再設(shè)置為可寫,然后再修改回來。這個(gè)方法經(jīng)常在CGI和Perl使用,但是很不幸,還沒有令人滿意的方法來用FSO實(shí)現(xiàn)。
還能用FSO做什么?
在FSO中還有許多很棒的功能,但許多人沒有意識(shí)到。這些功能常常是在你感到做某些事情很難后才發(fā)現(xiàn)的,這時(shí)你經(jīng)常要感嘆到:要是我早知道這個(gè)方法就好了!
下面列舉一下這些不常用但是卻非常酷的功能:
很少被了解的FSO功能
GetSpecialFolder Method 返回特定的Windows文件夾的路徑: Windows安裝目錄;Windows系統(tǒng)目錄;Windows臨時(shí)目錄 FSO.GetSpecialFolder([0, 1, or 2])
GetTempName Method 返回一個(gè)隨機(jī)產(chǎn)生的文件或者目錄名字,用于需要存儲(chǔ)臨時(shí)數(shù)據(jù)時(shí)
GetAbsolutePathName Method 返回文件夾的絕對(duì)路徑(類似于Server.MapPath)。
比如,F(xiàn)SO.GetAbsolutePathName("region") 將返回類似于下面的結(jié)果:"c:mydocsmyfolder egion"
GetExtensionName Method 返回路徑中最后部分的擴(kuò)展名
(比如:FSO.GetExtensionName("c:docs est.txt") 將返回txt)
GetBaseName and GetParentFolder Methods 返回路徑中最后部分的父文件夾
(比如:FSO.GetParentFolder ("c:docsmydocs") 將返回'docs')
Drives Property 返回所有本地可用驅(qū)動(dòng)器的集合,用于建立資源瀏覽器樣的用戶接口。
使用上面的功能時(shí),最好建立好出錯(cuò)處理的代碼。因?yàn)槿绻枰膮?shù)不存在,將會(huì)產(chǎn)生麻煩的信息。
總結(jié)
如我們所見,F(xiàn)SO非常有用,這里介紹的僅僅是冰山一角。你可以使用FSO建立功能強(qiáng)大的應(yīng)用程序,簡(jiǎn)單地完成許多任務(wù)。
在 ASP 程序中,我們需要對(duì)文件進(jìn)行操作,常常會(huì)利用到 FSO 組件,而很多人對(duì)此不是很了解,所以想到開設(shè)這個(gè)專題,用來收集 FSO 相關(guān)的介紹資料。歡迎大家補(bǔ)充并進(jìn)行討論。 FileSystemObject 對(duì)象模型
QUOTE
FileSystemObject (FSO) 對(duì)象模型,允許對(duì)大量的屬性、方法和事件,使用較熟悉的 object.method 語法,來處理文件夾和文件。
使用這個(gè)基于對(duì)象的工具和:
HTML 來創(chuàng)建 Web 頁 Windows Scripting Host 來為 Microsoft Windows 創(chuàng)建批文件 Script Control 來對(duì)用其他語言開發(fā)的應(yīng)用程序提供編輯腳本的能力 因?yàn)樵诳蛻舳耸褂?FSO 而引起重要的安全性問題,提供潛在地不受歡迎的對(duì)客戶端本地文件系統(tǒng)的訪問,假定本文檔使用 FSO 對(duì)象模型,來創(chuàng)建由服務(wù)器端的 Internet Web 頁執(zhí)行的腳本。因?yàn)槭褂昧朔?wù)器端,Internet Explorer 默認(rèn)安全設(shè)置不允許客戶端使用 FileSystemObject 對(duì)象。覆蓋那些默認(rèn)值可能會(huì)引起在本地計(jì)算機(jī)上不受歡迎的對(duì)其文件系統(tǒng)的訪問,從而導(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)是以易于訪問的格式把數(shù)據(jù)存儲(chǔ)在有效的空間和資源中。這就要求能夠創(chuàng)建文件,插入和改變數(shù)據(jù),以及輸出(讀取)數(shù)據(jù)。因?yàn)榘褦?shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中,如 Access 或 SQL 服務(wù)器,會(huì)給應(yīng)用程序增加很大的開銷,所以把數(shù)據(jù)存儲(chǔ)在二進(jìn)制或文本文件中可能是最有效的解決方案。可能不希望有該開銷,或者數(shù)據(jù)訪問要求可能不需要與功能完備的數(shù)據(jù)庫相關(guān)聯(lián)的所有額外功能。
包含在 Scripting 類型庫 (Scrrun.dll) 中的 FSO 對(duì)象模型,支持通過 TextStream 對(duì)象來創(chuàng)建和操作文本文件。雖然還不支持二進(jìn)制文件的創(chuàng)建或操作,但計(jì)劃將來要支持二進(jìn)制文件。 摘自 Windows 腳本手冊(cè)。 相關(guān)資料: Windows 腳本手冊(cè) 下載
--------------------
純白色云娜音樂54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com |
|
|
|
不學(xué)無術(shù) |
Apr 3 2005, 05:43 AM
|

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

|
三種禁用 File System Object 組件的方法眾所周知,F(xiàn)ileSystemObject組件的強(qiáng)大功能及破壞性是它屢屢被免費(fèi)主頁提供商(那些支持ASP)的禁用的原因,我整理了一下,本來只找到兩種方法,后來被某人一刺激,硬是想到第三種不為人所知的方法,呵呵,也不知道是不是這樣的。 第一種:用 RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll (win98路徑)來注銷該組件。此方法過于狠毒,屬于同歸于盡的方法,大家都沒得用,是下招。 第二種:修改 Progid 的值,在 ASP 里調(diào)用組件的方式通常是 Set 對(duì)象名 = Server.CreateObject("Progid"),這時(shí)候我們就可以通過修改注冊(cè)表中的 Progid 值從達(dá)到禁用該組件的方法。在 開始-運(yùn)行中敲入 regedit,然后找到 HKEY_CLASSES_ROOT\Scripting.FileSystemObject,這時(shí)候我們就可以更改該P(yáng)rogid的值了,如改成 Scripting.FileSystemObject8 。這樣在ASP頁里就這樣調(diào)用了:
CODE
<%@ Language=Vbscript%> <% Set Fs=Server.CreateObject("Scripting.FileSystemObject8") %>
(如果你前面沒有調(diào)用過該組件的話,則無須重啟,就可以看到效果了,否則請(qǐng)重啟后看效果。) 這時(shí)候我們看看還是用原來的調(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ì)想,既然能通過修改Progid值來禁用該組件,那 Clsid 是否也可以來修改呢?(OK,你想得和我一樣)我們知道,除了 CreateObject 方法以外,也可以使用一般的<object>標(biāo)注建立一個(gè)組件,我們可以在ASP里面使用 HTM L的 <object> 標(biāo)注,以便在網(wǎng)頁中加入一個(gè)組件。方法是:
CODE
<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj ect"></object> Runat 表示是在服務(wù)端執(zhí)行,Scope 表示組件的生命周期,可以選用Session, Application 或 page (表示當(dāng)前頁面,也可缺省)。 這種寫法對(duì)我們沒用,還有一種寫法是:
CODE
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></object> 我們也可以通過修改該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é)果,沒問題,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ì)影響別人。 作者:未知 來源:http://www.7880.com/Info/Article-a1be400.html
--------------------
純白色云娜音樂54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com |
|
|
|
不學(xué)無術(shù) |
Apr 3 2005, 06:08 AM
|

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

|
使用 FSO 把文本信息導(dǎo)入數(shù)據(jù)庫在開發(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ì)象模型來對(duì)文件系統(tǒng)進(jìn)行訪問處理。該模型提供了一個(gè)基于對(duì)象的工具,通過它所提供的一系列屬性和方法,我們可以在應(yīng)用程序中更簡(jiǎn)單、靈活地對(duì)文件系統(tǒng)進(jìn)行各種操作。 一、FSO簡(jiǎn)介 FSO 對(duì)象模型包含以下幾種對(duì)象: Drive 對(duì)象:允許收集系統(tǒng)物理或通過 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ì)象中的方法,因此我們既可以通過 FileSystemObject 對(duì)象來對(duì)驅(qū)動(dòng)器、文件夾和文件進(jìn)行大多數(shù)操作,也可以通過對(duì)應(yīng)的驅(qū)動(dòng)器、文件夾或文件對(duì)象對(duì)這些組件進(jìn)行操作。FSO 模型通過兩種方法實(shí)現(xiàn)對(duì)同一對(duì)象的操作,其操作效果是相同的,提供這種冗余功能的目的是為了實(shí)現(xiàn)最大的編程靈活性。 在這篇文章中,我們將講解利用 FSO 對(duì)象模型的 TextStream 對(duì)象對(duì)文本文件的操作。 (一) 用 FileSystemObject 來獲取文本文件對(duì)象 1.創(chuàng)建一個(gè) FileSystemObject 對(duì)象實(shí)例 要進(jìn)行文件操作,首先必須創(chuàng)建一個(gè) FileSystemObject 對(duì)象實(shí)例,用來創(chuàng)建或打開一個(gè)文件.創(chuàng)建一個(gè) FileSystemObject 對(duì)象實(shí)例的具體格式為(以AFileSystemObject)為例:
CODE
Set AFileSystemObject = CreateObject("Scripting.FileSystemObjecct") 2.用 FileSystemObject 來獲取文本文件對(duì)象 TextStream FileSystemObject 提供了兩種方法用于獲取文本文件對(duì)象 TextStream,其中用于創(chuàng)建文件的是 CreateTextFile,用于打開已存在文件的是 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í)是否覆蓋原來的文件。該參數(shù)可以省略,缺省時(shí)為 False,即不覆蓋原來文件。 IsUnicode 是一個(gè)Boolean值,表示要建立的文件是ASCII文件還是Unicode文件,該參數(shù)可以省略,缺省時(shí)為 False,即為 ASCII 文件。 ⑵ 打開已存在的文件 打開已存在文件的方法的具體格式為(以AFileSystemObject為例):
CODE
AFilesystemObject.OpenTextFile(FileName, IOMode, create, format) 其中: FileName 是一個(gè)string值,指定要打開的文件的名稱,通常為文件的實(shí)際路徑加文件名稱,C:\filepath\test.txt 。 IOMode 是常數(shù)值,表示打開文件的目的,F(xiàn)orReading(1)表示用于讀取數(shù)據(jù);ForAppending 表示用于增加數(shù)據(jù).該參數(shù)可以省略,缺省時(shí)為 ForReading。 Create 是一個(gè)Boolean值,表示要打開的文件不存在時(shí)是否創(chuàng)建新文件, 該參數(shù)可以省略,缺省時(shí)為False,即不創(chuàng)建新文件。 Format 表示文件打開的方式.其可能的值及含義如下: TristateTrue:以 Unicode 的方式打開. TristateFalse:以 ASCII 的方式打開. TristateUseDefault:以系統(tǒng)默認(rèn)的方式打開. 該參數(shù)可以省略,缺省時(shí)為 TristateFalse ,即ASCII方式。 (二).用 TextStream 進(jìn)行文件操作 在建立或打開了文件之后,就可利用對(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)前位置開始,讀入由NumOfCharacters數(shù)目指定的若干字符,返回一個(gè)字符串。 ⑹ ReadLine 該方法從文件當(dāng)前位置開始,讀入當(dāng)前行的內(nèi)容直到行尾,返回一個(gè)字符串。 ⑺ ReadAll 該方法從當(dāng)前位置開始,讀入整個(gè)文件的內(nèi)容直到文件結(jié)束,返回一個(gè)字符串。 ⑻ Skip(NumOfCharacters) 該方法從文件當(dāng)前位置開始,跳過由NumOfCharacters數(shù)目指定的若干字符。 ⑼ SKipLine 該方法從文件當(dāng)前位置開始,跳過當(dāng)前行的內(nèi)容。 3.用于關(guān)閉文件的方法有: ⑴ Close 關(guān)閉已經(jīng)建立或打開的文件。 (三)、下面就以一個(gè)實(shí)例來說明如何使用FSO來讀取文本文件和如何保存到數(shù)據(jù)庫: 1、 先創(chuàng)建一個(gè)讀取文件路徑的頁面: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ù)庫代碼: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ǔ)過程 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)入庫成功!<a href=dolist.html>[繼續(xù)導(dǎo)入]</a><br>")
Set Conn = Nothing Set FSO = Nothing Set ATextStream = Nothing %> 附:存儲(chǔ)過程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é)束,希望這篇文章能給讀者帶來一定的幫助。 作者:未知 來源:http://www.programfan.com/article/showarticle.asp?id=2328
--------------------
純白色云娜音樂54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com |
|
|
|
不學(xué)無術(shù) |
Apr 3 2005, 06:19 AM
|

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

|
ASP 中取得圖片寬度和高度的類(無組件)
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) %> 作者:未知 來源:http://www.programfan.com/article/showarticle.asp?id=2664
--------------------
純白色云娜音樂54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com |
|
|
|
不學(xué)無術(shù) |
Apr 3 2005, 06:29 AM
|

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

|
使用 FSO 進(jìn)行搜索 建立搜索引擎的關(guān)鍵是遞歸。主要地,編寫一段代碼搜索目錄下的文件,然后對(duì)所有的目錄循環(huán)執(zhí)行同樣的代碼。因?yàn)椴荒艽_定總共有多少個(gè)子目錄,所以必須一遍又一遍地執(zhí)行搜索代碼,直到結(jié)束。遞歸調(diào)用非常好! 下面來創(chuàng)建搜索頁面。假設(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 為了能打開文件,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)單地打開目錄下的每一個(gè)文件,看看其中是否包含指定的字符串,如果找到字符串就顯示那個(gè)文件的鏈接。 注意,隨著文件和子目錄數(shù)量的增加,搜索花費(fèi)的時(shí)間也將增加。如果需要繁重的搜索工作,建議你采取其他的方法,比如微軟公司的索引服務(wù)器 Index Server。 |
W3 JMail 郵件組件是Dimac公司開發(fā)的用來完成郵件的發(fā)送、接收、加密和集群傳輸?shù)裙ぷ鞯摹3 Jmail組件是國(guó)際最為流行的郵件組件之一,當(dāng)今世界上絕大部分ASP程序員都在使用w3 Jmail組件構(gòu)建郵件發(fā)送系統(tǒng),那是因?yàn)閣3 Jmail組件使用了新的內(nèi)核技術(shù),使其更加可靠和穩(wěn)定。
一、下面向讀者介紹w3 Jmail4.3組件的新特性:
1、 w3 Jmail4.3組件重新設(shè)計(jì)了其內(nèi)部結(jié)構(gòu)——使用Message對(duì)象代替原來的單一對(duì)象Jmail.smtpmail發(fā)送郵件;
2、 w3 Jmail4.3組件一共有十多個(gè)對(duì)象(后面將詳細(xì)介紹)——這些對(duì)象中,絕大多數(shù)是針對(duì)Jmail.Message對(duì)象操作的;
3、 支持從POP3郵件服務(wù)器收取郵件;
4、 支持加密郵件的傳輸;
5、 快速發(fā)送,一次會(huì)話就完成郵件發(fā)送;
6、 還有一個(gè)特性就是可以使用w3 Jmail4.3組件的集群發(fā)送功能一次發(fā)送成千上萬個(gè)郵件,還可以通過郵件合并(mailmerge)對(duì)象來個(gè)性化郵件。
二、Jmail郵件組件的安裝及卸載:
1、 安裝
跟使用別個(gè)組件一樣,在使用Jmail郵件組件之前要先安裝或注冊(cè)該組件Jmail.dll。具體注冊(cè)方法,是先把Jmail.dll文件拷貝到硬盤的某一目錄下(如C:\Jmail\Jmail.dll),然后執(zhí)行命令Regsvr32 C:\Jmail\Jmail.dll即可。
2、 卸載
卸載組件是安裝組件的相反動(dòng)作,可以使用參數(shù)/U來卸載已安裝的組件,執(zhí)行命令Regsvr32 /U Jmail.dll即可。
三、詳細(xì)介紹W3 Jmail組件的對(duì)象(12個(gè)):
1、.POP3對(duì)象
屬性(或方法)
說明
Connect(Username,Password,Server,Port)
連接POP3服務(wù)器,斷口可選,默認(rèn)110。
DeleteMessages()
從郵件服務(wù)器上刪除所有郵件。
DeleteSingleMessage(MessageID)
從郵件服務(wù)器上刪除由MessageID指定的郵件。
Disconnect()
關(guān)閉跟郵件服務(wù)器的連接。
DownloadHeaders()
從郵件服務(wù)器上讀取所有的郵件頭并傳遞給Messages集合。
DownloadMessages()
從郵件服務(wù)器讀取所有郵件。
DownloadSingleHeader(MessageID)
從郵件服務(wù)器讀取指定的郵件頭并傳遞給Messages集合。
DownloadUnreadMessages()
從郵件服務(wù)器上讀取所有未讀郵件。
2、.Messages對(duì)象
屬性(或方法)
說明
Clear()
清除集合中的所有內(nèi)容,并不會(huì)刪除郵件服務(wù)器上的任何郵件。
Count():Integer
返回集合中記錄的數(shù)目:I=Messages.Count
Item(Index):Pointer
返回一個(gè)Message對(duì)象。Set oMsg=Messages.Item(0)
3、.Message對(duì)象
屬性(或方法)
說明
AddAttachment(FileName,isInline,ContentType):String
給郵件添加一個(gè)文件型的附件。isInline設(shè)置為True時(shí),添加的這個(gè)附件就是一個(gè)可嵌入的附件。
AddCustomAttachment(FileName,Data,isInline):String
給郵件添加一個(gè)自定義類型的附件。
AddHeader(Xheader,Value)
給郵件添加一個(gè)自定義郵件頭X-Header。
AddNativeHeader(Header,Value)
給郵件添加一個(gè)郵件頭。
AddRecipient(emailAddress,recipientName,PGPKey)
給郵件添加一個(gè)收件人。RecipientName和PGPKey是可選項(xiàng),RecipientName為收件人姓名,PGPKey給郵件加密。
AddRecipientBCC(emailAddress,PGPKey)
添加一個(gè)郵件暗送人(BCC)地址。
AddRecipientCC(emailAddress,recipientName,PGPKey)
給郵件添加一個(gè)郵件抄送人(CC)地址。
AddURLAttachment(bstrURL,bstrAttachAs,isInline,bstrAuth):String
從指定的URL下載文件并添加為郵件附件。參數(shù)bstrAttachAs是用來更改添加為郵件附件的文件名。
AppendBodyFromFile(FileName)
清除郵件正文,并把指定文件的內(nèi)容作為郵件正文。
AppendHTML(Text)
從郵件追加HTML格式正文,如例所示:Message. AppendHTML(“<H3>Hello Word</H3>”)
AppendText(Text)
向郵件添加文本正文。
Clear()
清除所有郵件消息,是成為一個(gè)空對(duì)象。
ClearAttachments()
清除附件列表。如:Message.ClearAttachments
ClearCustomHeaders()
清除所有自定義的郵件頭。
ClearRecipients()
清除所有收件人地址列表。
Close()
釋放Jmail與郵件服務(wù)器連接而使用的緩存(Cache)。
DecodeHeader(Header):String
輸出一個(gè)郵件頭消息。
ExtractEmailAddressesFromURL(bstrURL,bstrAuth)
從指定的網(wǎng)制(URL)讀取并添加郵件列表。
GetMessageBodyFromURL(同上)
刪除郵件正文并用指定的URL的內(nèi)容代替。
KeyInformation(keyIdentifier):pointer
返回一個(gè)PGPKey對(duì)象。
LoadFromStream(Stream)
從數(shù)據(jù)庫流讀取數(shù)據(jù),該數(shù)據(jù)庫流必須符合RFC822標(biāo)準(zhǔn)。
LogCustomMessage(Message)
給Jmail日志文件添加自定義日志。此函數(shù)只有在logging屬性被設(shè)置為True時(shí)有效。
Nq()
將郵件追加到發(fā)送隊(duì)列等待發(fā)送。
ParseMessage(MessageSource)
解析一個(gè)郵件,數(shù)據(jù)流必須符合RFC822格式標(biāo)準(zhǔn)。
SaveToStream(Stream)
保存郵件到數(shù)據(jù)流,數(shù)據(jù)流必須符合RFC822格式標(biāo)準(zhǔn)。
Send(MailServer,enque):Boolean
發(fā)送郵件。郵件服務(wù)器是一個(gè)描述郵件服務(wù)器名稱或地址的字符串,用戶名和密碼是可選項(xiàng)。當(dāng)要發(fā)送認(rèn)證郵件時(shí)使用格式為:用戶名:密碼@郵件服務(wù)器
SendToNewsGroup(ServerName,NewsGroup)
使用指定的NNTP服務(wù)器發(fā)送郵件到新聞組,多個(gè)郵件用“,”隔開。
About():string
設(shè)置一些附加信息。
Attachments():Pointer
返回郵件的附件集合。Set Attachments=Message.Attachments
Body():String
返回郵件正文。Response.Write (Message.Body)
BodyText():String
返回全部的文本正文。Response.Write (Message.BodyText)
Charset():String
設(shè)置郵件使用的字符集。默認(rèn)為US-ASCII,支持中文則設(shè)置為GB2312。
ContentTransferEncoding():String
設(shè)置郵件編碼。默認(rèn)為:Quoted-Printable.
ContentType():string
返回正文類型。
Date():Date
返回郵件發(fā)送時(shí)間。
DeferredDelivery():Date
設(shè)置郵件定時(shí)發(fā)送。
Encoding():String
設(shè)置附件的默認(rèn)編碼:Base64或Quoted-Printable
EncryptAttachments():Boolean
設(shè)置為True時(shí),所有的附件都被加密,當(dāng)然是編譯器可用的情況下。其默認(rèn)值為True.
ErrorCode():Integer
如果message.silent設(shè)置為True時(shí),該函數(shù)包含錯(cuò)誤號(hào)。
ErroeMessage():String
如果message.silent設(shè)置為True時(shí),該函數(shù)包含錯(cuò)誤描述。
ErroeSource():String
如果message.silent設(shè)置為True時(shí),該函數(shù)包含錯(cuò)誤來源。
From():String
返回或設(shè)置發(fā)件人的Email地址。
FromName():String
返回或設(shè)置發(fā)件人的名字。
HtmlBody():String
返回或設(shè)置郵件正文的HTML部分。
ISOEncodeHeaders():Boolean
郵件頭是否使用iso-8859-1編碼。(默認(rèn)為True)
Log():String
當(dāng)Logging為True時(shí),該函數(shù)返回創(chuàng)建的日志。
Logging():Boolean
是否啟用日志。Message.Logging=True時(shí),啟用日志。
MailData():String
返回郵件的源代碼。
MailDomain():String
設(shè)置發(fā)送郵件時(shí)使用的郵件服務(wù)器。
MailServerPassWord():String
當(dāng)郵件服務(wù)器使用SMTP發(fā)信認(rèn)證時(shí),該函數(shù)設(shè)置登錄密碼。
MailServerUserName():String
當(dāng)郵件服務(wù)器使用SMTP發(fā)信認(rèn)證時(shí),該函數(shù)設(shè)置登錄帳號(hào)。
MimeVersion():String
聲明Mime版本,默認(rèn)為1.0。
MsPickupdirectory():String
指定MS SMTP服務(wù)的Pickup文件夾的位置。
PGPEncrypt():Boolean
當(dāng)郵件是使用PGP發(fā)送時(shí)并該屬性被設(shè)置為True時(shí),該郵件將被自動(dòng)加密。
PGPSign():Boolean
當(dāng)郵件是使用PGP發(fā)送時(shí)并該屬性被設(shè)置為True時(shí),該郵件將被自動(dòng)簽名。
Priority():Byte
設(shè)置郵件的優(yōu)先級(jí):1、2和3
Recipients():Pointer
返回收件人集合。
RecipientsString():String
返回收件人集合(只讀)。
ReplyTo():String
指定一個(gè)回復(fù)地址。
Silent():Boolean
當(dāng)設(shè)置為True時(shí),Send()方法就會(huì)忽略錯(cuò)誤并不將錯(cuò)誤信息返回給操作系統(tǒng)。
SimpleLayout():Boolean
當(dāng)設(shè)置為True時(shí),發(fā)信時(shí)Jmail不會(huì)添加郵件頭到郵件里。
Size():Integer
返回郵件的總字節(jié)數(shù)。
Subject():String
設(shè)置郵件標(biāo)題。
Text():string
返回完整的郵件內(nèi)容。
Version():String
返回Jmal的版本信息。
4、 Headers對(duì)象
屬性(或方法)
描述
GetHeader(HeaderName):String
返回指定的郵件頭的值。
Text():String
返回所有的郵件頭的值。
5、 Recipients對(duì)象
屬性(或方法)
描述
Add(Value)
追加一個(gè)收件人到集合中。
Clear()
清除集合中的全部記錄。
Count():Integer
返回集合中收件人的總數(shù)。
Item(Index):Pointer
返回集合中的一個(gè)指定的收件人。
6、 Recipient對(duì)象
屬性(或方法)
描述
New(Name,Email,recipientType):Pointer
創(chuàng)建一個(gè)可以添加到收件人集合中Recipients的收件人。
Email():String
返回收件人的郵件。
Name():String
返回收件人的姓名。
ReType():Integer
返回收件人模式(收件人To=0,抄送CC=1,暗送BCC=2)。
7、 Attachments對(duì)象
屬性(或方法)
描述
Add(Attachment)
添加一個(gè)附件到集合。
Clear()
清除集合中的全部附件。
Count():Integer
返回集合中附件的總數(shù)。
Item(Index):Pointer
返回集合中指定的附件。
今天,我學(xué)會(huì)了用jmail 發(fā)郵件!!!但愿我每天都在成長(zhǎng)中!呵呵

方法是:
1,下載jmail
2,安裝,
3,找到dll拷貝到同一級(jí)目錄下
4,注冊(cè),普通的,大多數(shù)dll無需注冊(cè),只需要放在與exe相同的目錄下就可以了。不推薦放在
system之類的目錄中。
只有com服務(wù)器的dll需要注冊(cè)(類似ocx)。一般不需要參數(shù)
regsvr32 abc.dll
反注冊(cè):
revsvr32 /u abc.dll
5,最后:
<%
Set jmail = Server.CreateObject("JMAIL.Message") '建立發(fā)送郵件的對(duì)象
jmail.silent = true '屏蔽例外錯(cuò)誤,返回FALSE跟TRUE兩值j
jmail.logging = true '啟用郵件日志
jmail.Charset = "GB2312" '郵件的文字編碼為國(guó)標(biāo)
jmail.ContentType = "text/html" '郵件的格式為HTML格式
jmail.AddRecipient "ntlizheng@eyou.com" '郵件收件人的地址
jmail.From = "ntlizheng@126.com" '發(fā)件人的E-MAIL地址
jmail.MailServerUserName = "ntlizheng" '登錄郵件服務(wù)器所需的用戶名
jmail.MailServerPassword = "#######" '登錄郵件服務(wù)器所需的密碼
jmail.Subject = "Mail Subjectntlizheng" '郵件的標(biāo)題
jmail.Body = "Mail dddddBody" '郵件的內(nèi)容
'jmail.Prority = 1 '郵件的緊急程序,1 為最快,5 為最慢, 3 為默認(rèn)值
jmail.Send("smtp.126.com") '執(zhí)行郵件發(fā)送(通過郵件服務(wù)器地址)
jmail.Close() '關(guān)閉對(duì)象
response.write "______________here"
response.end
%>
6:成功了,呵呵,好爽啊!
9:57:33
呵呵,一個(gè)新單詞:
簡(jiǎn)明英漢詞典
 |
encryption |
|
|
|
編密碼 |
 |
Encryption |
|
|
|
[計(jì)] 加密術(shù),密碼術(shù)
 |
mass |
|
|
|
n. |
|
塊, 大多數(shù), 質(zhì)量, 群眾, 大量 |
|
adj. |
|
群眾的, 大規(guī)模的, 集中的 |
|
vt. |
|
使集合 |
|
vi. |
|
聚集 | |