ASP講座之五:ASP組件(二)
作者:Eve Cole
更新時間:2009-05-30 19:58:12
在上一講中,我們學習如何建立元件,使用了瀏覽器能力元件、File Access元件、AD Rotator元件和Content Linking元件,也知道了Server物件的CreateObject方法、MapPath方法和HTMLEncode方法。本講將繼續組件的學習。
一、 Email元件:NTS Collaboration Data Objects
我們在網路上經常看到,許多網站均提供線上寄信功能(即用表單實現Question提交,Support或資訊回饋等等)或向訪客發送確認資訊。這項功能對個人主頁來說是很難達到的,因為需要主頁提供者額外的支援(我個人主頁上的線上寫信是用CGI寫的,與ASP無關),這裡就其原理舉一簡單的例子:
特別說明:本講座所舉的所有範例均在Windows NT4.0 Server+IIS(Internet Information Server)4.0上偵錯,但大部分也適用於Windows9.x+PWS。不過要好好學用ASP,最好再裝一個Windows NT與Windows95/98並存(沒裝過不要怕,很容易的,只要機器稍微好一點就行了,NT安裝後能自動做成Win NT/Win9. x雙啟動)。
<% 'wuf30.asp
Dim Mail
'建立一個Email組件
Set Mail = Server.CreateObject("CDONTS.NewMail")
'發送Email
Mail.Send "[email protected]","[email protected]","Subject","Body"
Set Mail = Nothing
%>
這是一個最簡單的例子,事實上,使用該元件,你可以發送純文字格式郵件或HTML超文字格式郵件,該元件也支援副本(CC)和密件副本(BCC),並且可以包含圖片和附件,甚至還以可接收郵件,應該說功能還是比較強大的。但我個人並不是很欣賞,因為要使用該元件,必須安裝Windows NT Server和IIS4.0的SMTP服務(微軟風格),而且該元件不支援POP3協定。因此如果使用該元件無法正常傳送郵件,你可以開啟Internet Server Manager看看Default SMTP Site是否已啟動(Start)以及一些相關的設定。不過,如果你是微軟迷,可到我的首頁(http://wuf.bentium.net/)下載該元件的例程wuf31.asp和sendmail.asp自己研究。
二、 使用第三方組件到現在為止,我們所介紹的組件都包含在IIS4.0中,你可以直接使用這些組件。除此之外,還可從Microsoft IIS Resource Kit光碟中取得以下兩個元件(或去http://www.microsoft.com/iis碰碰運氣看是否有下載):
l Page Counter元件:網頁計數器
l Permission Checker元件:網頁存取權限確認元件
IIS4.0內建組件的介紹到這裡就告一段落了,但ASP組件的學習還要繼續,一方面是因為IIS4.0內建的組件很少,另一方面已提供的這些組件或許功能並不很強大,適合你的需要。因此更大量的資源是網上現存的成百上千的第三方組件,它們有些是免費的,有些提供功能限製版或評估版,當然更多的要銀子的(一個組件要三位數的$,有沒有搞錯! 」的感嘆。我們不妨透過幾個例子來找這種感覺。
(一) 文件上傳元件AspSmartUpload(免費)
先下載元件:,檔案大小約100K(也可去我的網站下載)。下載解包後,共有三十多個文件,分別位於不同目錄下,你可以參考其中的說明文件自己研究,這裡僅舉一個完整的例子說明如何使用第三方組件。
找到AspSmartUpload.dll和AspSmartUploadUtil.dll這兩個文件,在Web伺服器的命令提示字元下分別用」regsvr32.exe aspsmartupload.dll」和」regsvr32.exe aspsmartuploadutil.dll」命令列來註冊該元件(如果你是第一次使用Regsvr32.exe,可先將這兩個DLL檔案拷到Web伺服器的「Winnt/System32」或「Windows/System」目錄下),若註冊成功,彈出的視窗中會有」succeeded」字樣(注意:使用第三方組件前必須先註冊,有的第三方組件採用安裝方式,能自動註冊,而更多的象這樣,需要自己手動註冊)。註冊成功後,接下來就是寫入程式碼使用元件,該範例由兩個檔案組成(注意測試時請勿使用中文檔案名稱):
wuf32.htm – 上傳檔案的前端Web頁面(表單)
<HTML>
<style type="text/css">
<!--
input { font-family: "宋體", "Times New Roman"; font-size: 9pt; line-height: 16pt}
-->
</style>
<BODY BGCOLOR="white">
上傳檔案的Web頁面(可上傳檔案的數量自己定義,但檔案名稱中不能包含中文)
<HR>
<FORM METHOD="POST" ACTION="wuf34.asp" ENCTYPE="multipart/form-data">
<!-- TEXT -->
使用者名稱:<input TYPE="TEXT" name="myText" value=""><br>
<!-- PASSWORD -->
口 令:<input TYPE="PASSWORD" name="myPASSWORD" value=""><br>
<!-- HIDDEN -->
<input TYPE="hidden" name="myHidden" value="hidden"><br>
<!-- 文件-->
文件1:<INPUT TYPE="FILE" NAME="FILE1" SIZE="50"><BR>
文件2:<INPUT TYPE="FILE" NAME="FILE2" SIZE="50"><BR>
文件3:<INPUT TYPE="FILE" NAME="FILE3" SIZE="50"><BR>
文件4:<INPUT TYPE="FILE" NAME="FILE4" SIZE="50"><BR>
<INPUT TYPE="SUBMIT" VALUE="Upload">
</FORM>
</BODY></HTML>
按下「Upload」按鈕,後台由檔案wuf34.asp來處理(你也可下載更簡單的wuf33.asp):
<HTML><BODY BGCOLOR="white">
文件上傳結果:
<HR>
<%
Dim mySmartUpload, item, value, file
' 先如下建立組件
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
mySmartUpload.Upload
' 用For Each 迴圈取得From表單中每一項的值
For each item In mySmartUpload.Form
For each value In mySmartUpload.Form(item)
Response.Write(item & " = " & value & "<BR>")
Next
Next
Response.Write "<Hr>"
' 上傳文件數據
' Response.Write("檔案數目=" & mySmartUpload.Files.Count &"<BR>")
Response.Write("總字節= " & mySmartUpload.Files.TotalBytes &" bytes<Br><Br>")
Response.Write("檔案清單: " & "<Br>")
' 對每一個檔案- 還有更簡單的方法, 見wuf33.asp
For each file In mySmartUpload.Files
If not file.IsMissing Then
'以原來的檔名存於C:temp 下
file.SaveAs("c:temp" & file.FileName)
Response.Write(file.FileName & " (" & file.Size & "bytes)<BR>")
End If
Next
Set mySmartUpload = Nothing
%>
</BODY>
</HTML>
關於該元件更多、更詳細的用法、功能(如限制上傳文件的類型、尺寸,上傳至資料庫,下載文件或資料庫欄位等等),你可自行去看範例或研究洋文幫助。如果覺得看E文太累,也可下載一個全國產的File Upload組件,裡面有中文的幫助和範例,還是不錯的,下載地址:。
(二) 圖形組件:Dundas Pie Chart(餅狀圖)
先聽聽組件提供者是怎麼說的:“閃光的性能,足以讓人暈厥的高質量的圖形,強大、高速、無比的靈活性”,哇塞,吹牛勝過韋小寶,是不是這樣,看看結果之一:
有了這樣的餅狀圖,你也可以像新浪網一樣搞調查了,吹得這麼好的東西卻是免費的,你還等什麼,快快駕上你的慢貓去拉下來:
(1)3DPieCSC.EXE:http://www.dundas.com/downloads/freeproducts/files/3DPieCSC.EXE
(2)FPDocInst.exe:http://www.dundas.com/downloads/freeproducts/files/FPDocInst.exe
3DPieCSC.EXE中包括該組件,後者是說明文檔,都是安裝文件,我將它安裝在伺服器的“C:Inetpub3dPieCSC”目錄下,該組件自帶兩個複雜無比的樣例程序以展示它炫麗無比的性能,較難搞明白。這裡舉一個簡單實用的大眾化例子:
wuf36.htm,透過<IMG>標籤呼叫ASP檔:
<HTML><BODY>
<IMG src="wuf37.asp">
</BODY></HTML>
wuf37.asp,用來產生圖形(與上方同理,請勿在程式碼中使用中文):
<%@ Language=VBScript %>
<% Option Explicit
Dim objPieChart
Set objPieChart = Server.CreateObject("Dundas.PieChartServer.1") '先建立元件
'設定工作目錄
objPieChart.DirOutput = "C:Inetpub3dPieCSCSampleChart"
'設定範本檔案所在目錄
objPieChart.DirTemplate = "C:Inetpub3dPieCSCSampleTemplates"
'材質目錄-你可以輕鬆的改變圖形的材質和顏色
objPieChart.DirTexture = "C:Inetpub3dPieCSCSampleTextures"
'選擇一個範本檔案, 此範本檔案可自行編輯或修改
objPieChart.LoadTemplate "PieInTheSky.cuc"
'圖形標題
objPieChart.Title = "This is a Sample"
'增加各項目, 包括權重標籤說明
objPieChart.AddData 40, "Item1:40%","China"
objPieChart.AddData 30, "Item2:30%","USA"
objPieChart.AddData 30, "Item3:30%","Other"
'輸出結果為圖形, 可指定寬度和高度
objPieChart.SendJPEG 400,300
Set objPieChart = Nothing
%>
老實說,這個免費的東西還是不錯的,就是它提供的例行公事太複雜了,讓人不能一觸即會。現在你可能要來一個舉一反三,融會貫通,想怎樣得到柱狀圖,的確是有這樣的組件:ShotGraph,但是完全不需要搞這麼複雜嗎,你只需準備一個柱狀的圖片(不會做!看到別人網頁上有,另存一個不就搞定),利用HTML標記Weight、Height按比例拉伸和壓縮就行了(<img src = bar.gif width = <%=變數%> height = 10>)。
此外,為了彌補本講座開頭負責任的簡略,在此鄭重向大家推薦兩個Email組件:
(1) aspSmartMail:,注意千萬不要在程式碼中使用中文,不然你怎麼也發不出一封信,詳見例程wuf35.asp。
(2) W3 Jmail: http://download.dimac.net/jmail/jmail.exe。
(3) ChinaMail:http://wuf.bentium.net/,本人寫的全中文Email組件。
對於組件的感情,我個人是很複雜和沈重的,IIS4.0內置組件確實太少,然則網上E文的組件很多不支持中文,使用起來實在不夠爽,那麼為什麼不使用國產的組件呢,你去國內最好的http://www.chinaasp.com/就知道了,所列組件寥寥,令人寒心,那麼只剩一條路了,那就是自己寫(可一般人自己寫得了嗎?這是一個疑問)。我倒是很同意ChinaASP的呼籲,大概意思是國內沒有任何軟體公司公開發表ASP組件,在ASP方面的書雖成噸,但品味不高。的確,當初我應邀寫這個講座時,市面上關於ASP的書還很少,但現在,突然間出來很多,我還是建議你買外國人編的書,一來有光盤,二來確實舶來品總體上講得好些,讀起來像那麼回事,也不死板。
最後提供大家幾個元件資源網站:
(1) http://www.serverobjects.com/
(2) http://www.15seconds.com/
(3) http://www.activeserverpages.com/
(4) http://www.softartisans.com/