在ASP中,FSO的意思是File System Object,即文件系統對象。
我們將要操縱的計算機文件系統,在這里是指位于web服務器之上。所以,確認你對此擁有合適的權限。理想情況下,你可以在自己的機器上建立一個web服務器,這樣就能方便地進行測試。如果運行于Windows平臺,請試一試微軟公司的免費個人Web服務器PWS。
FSO 模型對象
Drive Object:驅動器對象 供存取磁盤或者網絡驅動器
FileSystemObject Object:文件系統對象 供存取計算機的文件系統
Folder Object:文件夾對象 供存取文件夾的所有屬性
TextStream Object:文本流對象 供存取文件內容
你可以使用上面的對象做計算機上的任何事情,也包括破壞活動 ;-( 所以,請小心使用FSO。在web環境中,存儲信息是非常重要的,比如用戶信息,日志文件,等等。FSO提供了一個強大且簡單的方法高效率地保存數據。在這篇文章里面,著重討論FileSystemObject和TextStream對象。
FSO由微軟公司提供支持,對于非Windows系統,大概不能再使用ASP。
怎么樣使用FSO?
為了使用FSO來執行所有的工作,首先要創建對象,代碼就象下面這樣:
< %
Set fso = Server.CreateObject("Scripting.FileSystemObject")
% >
這樣就建立了FSO并且賦予變量fso,接著就可以使用熟悉的object.method語法來執行文件系統的操作〔查看Visual Basic文檔,獲取更多的關于對象和對象向導編程的知識〕。在這里,我們可以使用fso.method 或者 fso.property,這些將在下面的例子中看到。
FSO模型位于由微軟提供的腳本運行時間DLL文件中,它是scrrun.dll。你可以在任何應用程序中引用這個DLL文件,比如MS Access,Word。 就是說,并非僅僅限制在ASP中應用它。
這里有一個簡要的FSO方法列表:
FSO方法
CopyFile 拷貝一個或者多個文件到新路徑
CreateTextFile 創建文件并且返回一個TextStream對象
DeleteFile 刪除一個文件
OpenTextFile 打開文件并且返回TextStream對象,以便讀取或者追加
如果想了解完整的FSO方法與屬性,請查閱微軟MSDN。下面來看幾個例子。
假設你想創建一個簡單的留言簿,你可以建立一個數據庫,在其中存儲用戶的信息。然而,如果并不需要數據庫的強大功能,使用FSO來存儲信息將節省你的時間和金錢。并且,一些ISP也許限制了web上的數據庫應用。
假設你在一個表單中收集了一些用戶信息,這里是一個簡單表單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")
迄今為止,還沒有新鮮的東西,無非是獲取表單域的值并且賦值到變量。下面出現了有趣的部分 - 寫文件:
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方法返回一個TextStream對象,它是FSO模型中的另外一個對象。TextStream對象揭示了操作文件內容的方法,比如寫、讀一行、跳過一行。VB常量vbcrlf產生一個換行符。
在OpentextFile的命令參數中定義了TRUE,這就告訴了系統,如果文件不存在,就創建它。如果文件不存在,并且沒有定義TRUE參數,就會出錯。
現在轉到目錄c: emp,打開test.txt,你可以看到如下的信息:
User's name
User's home page
User's email
當然,這些單詞可以被輸入在表單中的任何內容所替換。
現在已經有了一些用戶信息保存在文件中,就像一個簡單的數據庫。假設有一個用戶想了解所有的訪問者,就要從登
記的信息中分離出相關部分,因為沒有象數據庫一樣擁有結構化的列。
我們知道,在所創建的文件中,第1行是用戶名,第2行是他們的主頁,第3行是他們的電子郵件地址。隨后登記的用
戶也是按照這樣的結構存儲他們的信息,所以每3行將包含一個用戶的登記信息。知道了這些,就可以編寫下面的代碼來顯
示信息:
< %
' 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
接著,分析每一行,并且格式化數據:
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
%>
這里僅僅做了一個非常簡單的輸出,但是你可以根據情況包含表格或者DHTML表單信息。
如果已經正確地建立并寫入了文件,上面的小小循環將合適地列出數據庫中的每一個人的信息。ReadLine方法讀取1
行內容,直到遇到換行符,隨后的ReadLine調用將讀取下一行。AtEndOfStream是TextStream對象的屬性,它告訴我們何時
遇到文件的尾部。
假設由于某種原因,我們沒有正確地形成文件,如果一個用戶只有2行信息而不是3行,那么就會產生一些錯誤。我們
這里的循環取回文件中的下3行信息,如果沒有3行多的信息,就將出現如下的錯誤信息:
Server object error 'ASP 0177 : 800a003e'
所以,一定要添加一些錯誤處理代碼,以防文件中插入了多余的行或者少了必要的行信息。
上面討論了基本知識,然后說說權限許可的問題。FSO以創建它的用戶帳戶權限運行,換言之,如果有人從Internet
上訪問你的頁面,那么這個internet帳戶就創建FSO。如果以administrator的身份登錄計算機,并且登錄頁面,那么
administrator帳戶就創建了FSO。這是非常重要的,因為一定的帳戶擁有一定的權限,并且FSO需要一些權限從而能完整的
執行功能。
internet帳戶(IUSER_MachineName,MachineName是服務器的名字)一般只擁有讀權限,這意味著用戶將不能寫入留
言簿文件。然而,有幾個選擇可以繞過這個問題。
首先,也是很困難的,是要求用戶在填寫留言簿前登錄到服務器。然而,留言簿的要點是從匿名用戶處收集信息,如
果要求用戶登錄,就必須要知道他們是誰。因此,跳過這個選擇,看下一個。
第2個方法是創建一個目錄或者文件,IUSER_MachineName用戶對此有寫權限。這樣做可能開放了一些潛在的安全漏
洞,因為任何知道正確目錄并具備一定web技巧的人就能在服務器上填充內容。這是一個很嚴重的禁忌。所以你必須確認在
隱藏的場所保存了這些可寫目錄的信息,并且盡可能地將這些目錄設置在web目錄結構以外(比如在Windows下,這是一個
不在inetpub目錄下的一個目錄)。
你也許想:好,現在我知道如何寫入文件了。但能做到更多一些嗎?下面來試一試為web站點建立一個搜索功能。
建立搜索引擎的關鍵是遞歸。主要地,編寫一段代碼搜索目錄下的文件,然后對所有的目錄循環執行同樣的代碼。因
為不能確定總共有多少個子目錄,所以必須一遍又一遍地執行搜索代碼,直到結束。遞歸調用非常好!
下面來創建搜索頁面。假設已經建立了一個HTML表單,用戶在其中輸入一個搜索字符串。
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
上面的代碼簡單地初始化變量,Search函數執行搜索功能,描述如下:
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
為了能打開文件,FSO需要實際的文件路徑,而不是web路徑。比如,是c:inetpubwwwroot empindex.html, 而不是
www.enfused.com/temp/index.html 或者 /temp/index.html。 為了將后者轉換為前者,使用Server.MapPath
("filename"), filename表示web路徑名。
上面的代碼將在你指定的初始目錄下的文件夾的每一個子目錄中執行,在這里,初始目錄是指web根目錄“/”。然后
就簡單地打開目錄下的每一個文件,看看其中是否包含指定的字符串,如果找到字符串就顯示那個文件的鏈接。
注意,隨著文件和子目錄數量的增加,搜索花費的時間也將增加。如果需要繁重的搜索工作,建議你采取其他的方
法,比如微軟公司的索引服務器Index Server。
到此,你對FSO可能已經有了很好的體會。讓我們再深入研究一步,來解決更復雜的難題。
首先,你可能希望對文件改名。為了跟蹤所有的文檔,你將要重新命名它們以便唯一,這樣就可以被系統容易地區
別。很不幸,FSO不允許簡單的文件改名操作,所以我們不得不修改一下。
< %
' 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能力的不足在這里卻成了優勢,我們可以一次執行2步。首先,打開文件并讀入文件的內容。假設這里要創建一個
唯一的文件夾和一個唯一的文件來存儲文章。然而,因為文件夾的路徑每天都將改變,所以必須首先檢查是否文件夾已經
存在,如果不存在,就創建它。這在if not fso.folderexists代碼段完成。然后,取得那個路徑,創建一個新的文件。新
文件建立完成后,刪除掉舊文件,這通過fso.DeleteFile來完成。
這2步就是:對文件改名,然后移動到一個更合適的目錄下。注意,在這里還可以對文件進行更多地操作,比如在寫
入新文件前進行一下內容的編輯。
FSO確實存在一些弱點 - 比如,它很難處理二進制文件,這包括Word文檔、許多圖形格式的文件和其他一些文件。然而你仍然可以用其他的方式操作這些文件 - 移動它們、刪除它們,等等。你不能做的就是對它們進行打開或者寫操作。
另外一個限制是對于文件長度的問題。當立刻讀寫一些內容時,所有的信息都存儲在內存中 - 內容越多,消耗的內存就越大。這將使每個工作都變得慢起來。所以,如果需要操作非常大的文件,或者大量的小文件時,考慮將文件分割成小塊,并且經常的清除內存。將應用程序融入進COM對象組件,也能大大地提高程序的速度。
同樣,你也不能使用FSO來管理權限以及文件、文件夾的屬性,執行安全加密的一個很好方法就是將前面提到的留言簿文件設置為只讀,在需要時再設置為可寫,然后再修改回來。這個方法經常在CGI和Perl使用,但是很不幸,還沒有令人滿意的方法來用FSO實現。
還能用FSO做什么?
在FSO中還有許多很棒的功能,但許多人沒有意識到。這些功能常常是在你感到做某些事情很難后才發現的,這時你經常要感嘆到:要是我早知道這個方法就好了!
下面列舉一下這些不常用但是卻非常酷的功能:
很少被了解的FSO功能
GetSpecialFolder Method 返回特定的Windows文件夾的路徑: Windows安裝目錄;Windows系統目錄;Windows臨時目錄 FSO.GetSpecialFolder([0, 1, or 2])
GetTempName Method 返回一個隨機產生的文件或者目錄名字,用于需要存儲臨時數據時
GetAbsolutePathName Method 返回文件夾的絕對路徑(類似于Server.MapPath)。
比如,FSO.GetAbsolutePathName("region") 將返回類似于下面的結果:"c:mydocsmyfolder egion"
GetExtensionName Method 返回路徑中最后部分的擴展名
(比如:FSO.GetExtensionName("c:docs est.txt") 將返回txt)
GetBaseName and GetParentFolder Methods 返回路徑中最后部分的父文件夾
(比如:FSO.GetParentFolder ("c:docsmydocs") 將返回'docs')
Drives Property 返回所有本地可用驅動器的集合,用于建立資源瀏覽器樣的用戶接口。
使用上面的功能時,最好建立好出錯處理的代碼。因為如果需要的參數不存在,將會產生麻煩的信息。
總結
如我們所見,FSO非常有用,這里介紹的僅僅是冰山一角。你可以使用FSO建立功能強大的應用程序,簡單地完成許多任務。
在 ASP 程序中,我們需要對文件進行操作,常常會利用到 FSO 組件,而很多人對此不是很了解,所以想到開設這個專題,用來收集 FSO 相關的介紹資料。歡迎大家補充并進行討論。 FileSystemObject 對象模型
QUOTE
FileSystemObject (FSO) 對象模型,允許對大量的屬性、方法和事件,使用較熟悉的 object.method 語法,來處理文件夾和文件。
使用這個基于對象的工具和:
HTML 來創建 Web 頁 Windows Scripting Host 來為 Microsoft Windows 創建批文件 Script Control 來對用其他語言開發的應用程序提供編輯腳本的能力 因為在客戶端使用 FSO 而引起重要的安全性問題,提供潛在地不受歡迎的對客戶端本地文件系統的訪問,假定本文檔使用 FSO 對象模型,來創建由服務器端的 Internet Web 頁執行的腳本。因為使用了服務器端,Internet Explorer 默認安全設置不允許客戶端使用 FileSystemObject 對象。覆蓋那些默認值可能會引起在本地計算機上不受歡迎的對其文件系統的訪問,從而導致文件系統完整性的全部破壞,同時引起數據遺失或更糟的情況。
FSO 對象模型使服務器端的應用程序能創建、改變、移動和刪除文件夾,或探測特定的文件夾是否存在,若存在,還可以找出有關文件夾的信息,如名稱、被創建或最后一次修改的日期,等等。
FSO 對象模型還使文件處理變得很容易。在處理文件時,主要的目標是以易于訪問的格式把數據存儲在有效的空間和資源中。這就要求能夠創建文件,插入和改變數據,以及輸出(讀取)數據。因為把數據存儲在數據庫中,如 Access 或 SQL 服務器,會給應用程序增加很大的開銷,所以把數據存儲在二進制或文本文件中可能是最有效的解決方案。可能不希望有該開銷,或者數據訪問要求可能不需要與功能完備的數據庫相關聯的所有額外功能。
包含在 Scripting 類型庫 (Scrrun.dll) 中的 FSO 對象模型,支持通過 TextStream 對象來創建和操作文本文件。雖然還不支持二進制文件的創建或操作,但計劃將來要支持二進制文件。 摘自 Windows 腳本手冊。 相關資料: Windows 腳本手冊 下載
--------------------
純白色云娜音樂54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com |
|
|
|
不學無術 |
Apr 3 2005, 05:43 AM
|

論壇管理員
        
用戶組: 管理員 發表總數: 3,801 注冊日期: 1-March 03 來自: 天地人間 會員編號: 24

|
三種禁用 File System Object 組件的方法眾所周知,FileSystemObject組件的強大功能及破壞性是它屢屢被免費主頁提供商(那些支持ASP)的禁用的原因,我整理了一下,本來只找到兩種方法,后來被某人一刺激,硬是想到第三種不為人所知的方法,呵呵,也不知道是不是這樣的。 第一種:用 RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll (win98路徑)來注銷該組件。此方法過于狠毒,屬于同歸于盡的方法,大家都沒得用,是下招。 第二種:修改 Progid 的值,在 ASP 里調用組件的方式通常是 Set 對象名 = Server.CreateObject("Progid"),這時候我們就可以通過修改注冊表中的 Progid 值從達到禁用該組件的方法。在 開始-運行中敲入 regedit,然后找到 HKEY_CLASSES_ROOT\Scripting.FileSystemObject,這時候我們就可以更改該Progid的值了,如改成 Scripting.FileSystemObject8 。這樣在ASP頁里就這樣調用了:
CODE
<%@ Language=Vbscript%> <% Set Fs=Server.CreateObject("Scripting.FileSystemObject8") %>
(如果你前面沒有調用過該組件的話,則無須重啟,就可以看到效果了,否則請重啟后看效果。) 這時候我們看看還是用原來的調用方法的結果:
CODE
<%@ Language=Vbscript%> <% Set Fs=Server.CreateObject("Scripting.FileSystemObject") %> 這時候的運行結果為:
QUOTE
服務器對象 錯誤 'ASP 0177 : 800401f3'
Server.CreateObject 失敗
/aspimage/testfile2.asp, 行3
800401f3 (OK,達到我們的要求) 該方法由于本人遲了兩步,結果就讓別人搶著回答了,這樣極大的刺激了我,結果就產生了第三種方法。 第三種:細心的高手們會想,既然能通過修改Progid值來禁用該組件,那 Clsid 是否也可以來修改呢?(OK,你想得和我一樣)我們知道,除了 CreateObject 方法以外,也可以使用一般的<object>標注建立一個組件,我們可以在ASP里面使用 HTM L的 <object> 標注,以便在網頁中加入一個組件。方法是:
CODE
<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj ect"></object> Runat 表示是在服務端執行,Scope 表示組件的生命周期,可以選用Session, Application 或 page (表示當前頁面,也可缺省)。 這種寫法對我們沒用,還有一種寫法是:
CODE
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></object> 我們也可以通過修改該Clsid的值而禁用該組件,如將注冊表中 HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID 的值 0D43FE01-F093-11CF-8940-00A0C9054228 改成 0D43FE01-F093-11CF-8940-00A0C9054229 (改了最后面一位),這時候的寫法為:
CODE
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054229"></object> 看運行結果,沒問題,OK。這時候我們再用:
CODE
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11 CF-8940-00A0C9054228"></object> 這時候就出錯了。 新建一用戶:iusr_domain IIS里設置對應站點的匿名用戶 IUSR_DOMAIN CACLS: 設置目錄權限 這樣FSO可用,但不會影響別人。 作者:未知 來源:http://www.7880.com/Info/Article-a1be400.html
--------------------
純白色云娜音樂54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com |
|
|
|
不學無術 |
Apr 3 2005, 06:08 AM
|

論壇管理員
        
用戶組: 管理員 發表總數: 3,801 注冊日期: 1-March 03 來自: 天地人間 會員編號: 24

|
使用 FSO 把文本信息導入數據庫在開發WEB應用程序中,我們經常需要對文件系統中的驅動器、文件夾和文件進行處理,比如收集驅動器的相關信息;創建、添加、移動或刪除文件夾和文件等。在VB6中新提供了一套稱為FSO(File System Object)對象模型來對文件系統進行訪問處理。該模型提供了一個基于對象的工具,通過它所提供的一系列屬性和方法,我們可以在應用程序中更簡單、靈活地對文件系統進行各種操作。 一、FSO簡介 FSO 對象模型包含以下幾種對象: Drive 對象:允許收集系統物理或通過 LAN 與系統邏輯連接的硬盤、CD-ROM 等驅動器的可用空間、共享名等信息。 Folder 對象:允許創建、刪除或移動文件夾,并向系統查詢文件夾的名稱、路徑等。 Files 對象:允許創建、刪除或移動文件,并向系統查詢文件的名稱、路徑等。 TextStream 對象:允許創建和讀寫文本文件。 FileSystemObject 對象:提供一整套用于驅動器、文件夾和文件操作的方法,在功能上可以把它看作是上面幾個對象的集合并且經常與它們配合使用。與該對象相關聯的很多方法重復了前面四個對象中的方法,因此我們既可以通過 FileSystemObject 對象來對驅動器、文件夾和文件進行大多數操作,也可以通過對應的驅動器、文件夾或文件對象對這些組件進行操作。FSO 模型通過兩種方法實現對同一對象的操作,其操作效果是相同的,提供這種冗余功能的目的是為了實現最大的編程靈活性。 在這篇文章中,我們將講解利用 FSO 對象模型的 TextStream 對象對文本文件的操作。 (一) 用 FileSystemObject 來獲取文本文件對象 1.創建一個 FileSystemObject 對象實例 要進行文件操作,首先必須創建一個 FileSystemObject 對象實例,用來創建或打開一個文件.創建一個 FileSystemObject 對象實例的具體格式為(以AFileSystemObject)為例:
CODE
Set AFileSystemObject = CreateObject("Scripting.FileSystemObjecct") 2.用 FileSystemObject 來獲取文本文件對象 TextStream FileSystemObject 提供了兩種方法用于獲取文本文件對象 TextStream,其中用于創建文件的是 CreateTextFile,用于打開已存在文件的是 OpenTextFile,兩種方法的返回結果都是一個 TextStream 對象的實例,利用該對象可以進行文件的具體操作。 ⑴ 創建一個新文件 創建新文件的方法的具體格式為(以AFileSystemObject為例):
CODE
AFilesystemObject.CreateTextFile(NewFileName, OverwriteExistingFile, IsUnicode) 其中: NewFileName 是一個string值,指定要建立的文件的名稱,通常為文件的實際路徑加文件名稱,如 C:\webshare\aspsamp\filetest.txt 。 OverwriteExistingFile 是一個Boolean值,表示如果有同名文件存在時是否覆蓋原來的文件。該參數可以省略,缺省時為 False,即不覆蓋原來文件。 IsUnicode 是一個Boolean值,表示要建立的文件是ASCII文件還是Unicode文件,該參數可以省略,缺省時為 False,即為 ASCII 文件。 ⑵ 打開已存在的文件 打開已存在文件的方法的具體格式為(以AFileSystemObject為例):
CODE
AFilesystemObject.OpenTextFile(FileName, IOMode, create, format) 其中: FileName 是一個string值,指定要打開的文件的名稱,通常為文件的實際路徑加文件名稱,C:\filepath\test.txt 。 IOMode 是常數值,表示打開文件的目的,ForReading(1)表示用于讀取數據;ForAppending 表示用于增加數據.該參數可以省略,缺省時為 ForReading。 Create 是一個Boolean值,表示要打開的文件不存在時是否創建新文件, 該參數可以省略,缺省時為False,即不創建新文件。 Format 表示文件打開的方式.其可能的值及含義如下: TristateTrue:以 Unicode 的方式打開. TristateFalse:以 ASCII 的方式打開. TristateUseDefault:以系統默認的方式打開. 該參數可以省略,缺省時為 TristateFalse ,即ASCII方式。 (二).用 TextStream 進行文件操作 在建立或打開了文件之后,就可利用對象 TextStream 提供的方法進行文件的實際操作了。 1.用于寫操作的方法有: ⑴ Write(string) 將由 string 指定的字符串寫入到文件中。 ⑵ WriteLine(string) 在文件中寫入由 string 指定的字符串,并寫入一個換行字符。 參數string 可以省略,此時將在文件中插入一個空行。 ⑶ WriteBlankLines(NumOfLines) 在文件中插入若干空行,行數由 NumOfLines 指定。 2.用于讀操作的方法和屬性方法有: ⑴ AtEndOfLine 該屬性是一個 Boolean 值,表示文件指針是否已指向當前行的行尾。 ⑵ AtEndOfStream 該屬性是一個 Boolean 值,表示文件指針是否已指向文件尾。 ⑶ Column 該屬性是一個整數值,表示文件指針在當前行中的位置。 ⑷ Line 該屬性是一個整數值,表示文件指針所在行的行號。 ⑸ Read(NumOfCharacters) 該方法從文件當前位置開始,讀入由NumOfCharacters數目指定的若干字符,返回一個字符串。 ⑹ ReadLine 該方法從文件當前位置開始,讀入當前行的內容直到行尾,返回一個字符串。 ⑺ ReadAll 該方法從當前位置開始,讀入整個文件的內容直到文件結束,返回一個字符串。 ⑻ Skip(NumOfCharacters) 該方法從文件當前位置開始,跳過由NumOfCharacters數目指定的若干字符。 ⑼ SKipLine 該方法從文件當前位置開始,跳過當前行的內容。 3.用于關閉文件的方法有: ⑴ Close 關閉已經建立或打開的文件。 (三)、下面就以一個實例來說明如何使用FSO來讀取文本文件和如何保存到數據庫: 1、 先創建一個讀取文件路徑的頁面: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="導入信息"> </div> </FORM> … 2、 編寫把獲取到的文本值保存到數據庫代碼: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" ‘調用存儲過程 ObjComm.CommandType = adCmdStoredProc Set ObjComm.ActiveConnection = Conn
''''''''''創建輸入輸出參數''''''''''''''''' 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), --城市 … ''''''''''創建參數完畢'''''''''''''''''''' %> <% 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)
'''''''''提取數據'''''''''''''''''''''''''''' 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
''''''''''將變量加入參數集''''''''''''' ObjParamECom.Value = strLine1 ObjParamCCom.Value = strLine2 ObjParamAddr.Value = strLine3 …
''''''''''操作結束''''''''''''''''''''
ObjComm.Execute() '運行命令
Loop
Response.Write("<br>" & "導入庫成功!<a href=dolist.html>[繼續導入]</a><br>")
Set Conn = Nothing Set FSO = Nothing Set ATextStream = Nothing %> 附:存儲過程sp_AddMsg代碼
CODE
CREATE PROCEDURE dbo.sp_AddMsg --導入國外企業信息 (
@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 至此,全文內容講解結束,希望這篇文章能給讀者帶來一定的幫助。 作者:未知 來源:http://www.programfan.com/article/showarticle.asp?id=2328
--------------------
純白色云娜音樂54ol.com 54ol.net h365.net 5icn.com 5itw.com 54zz.net uofan.com |
|
|
|
不學無術 |
Apr 3 2005, 06:19 AM
|

論壇管理員
        
用戶組: 管理員 發表總數: 3,801 注冊日期: 1-March 03 來自: 天地人間 會員編號: 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 |
|
|
|
不學無術 |
Apr 3 2005, 06:29 AM
|

論壇管理員
        
用戶組: 管理員 發表總數: 3,801 注冊日期: 1-March 03 來自: 天地人間 會員編號: 24

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

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