Download presentation
Presentation is loading. Please wait.
1
第 14 章 網站的個人化資訊 14-1 Cookies 和 Session 建立個人化網頁 14-2 ASP.NET 的電子郵件處理 14-3 客戶端的檔案上傳 14-4 上傳圖檔到資料庫 14-5 ASP.NET 網頁行事曆
2
14-1 Cookies 和 Session 建立個人 化網頁 14-1-1 Cookies 的個人化網頁色彩 14-1-2 Sessions 的個人化網頁色彩
3
14-1-1 Cookies 的個人化網頁色 彩 -1 每位進入網頁的使用者對網頁的色彩都有個人 偏好,只需活用 Cookies ,就可以讓使用者設定 自已喜歡的網頁色彩,提供個人化色彩選擇。 在 Page_Load 事件處理程序建立 HttpCookie 物件, 如下所示: Dim Cookie As HttpCookie = New HttpCookie("personal") 然後使用 Values 屬性取得 Key 鍵名的物件集合, 使用 Add 方法新增鍵名和鍵值,如下所示: Cookie.Values.Add("TitleBgColor", "#CCFF99") Cookie.Values.Add("ForeColor","green") Cookie.Values.Add("BackColor","beige") ……………
4
14-1-1 Cookies 的個人化網頁色 彩 -2 如果 Cookie 沒有鍵名,表示只有單一值,直接 使用 Value 屬性指定其值,如下所示: Cookie.Value = "green" 最後需要新增 Cookie 到客戶端電腦,一共有兩 種方法,第一種是使用 Response 物件的 AppendCookie 方法,如下所示: Response.AppendCookie(Cookie) 也可以使用 Response 物件的 Cookies 屬性,如下 所示: Response.Cookies.Add(Cookie)
5
14-1-2 Sessions 的個人化網頁色 彩 Sessions 的個人化網頁色彩只是改為使用 Session 變數儲存自訂的色彩值,如下所 示: Session("TitleBgColor") = "#CCFF99" Session("ForeColor") = "green" Session("BackColor") = "beige" Session("LinkColor") = "blue" Session("TableColor") = "yellow" Session("TableBgColor") = "lightblue"
6
14-2 ASP.NET 的電子郵件處理 14-2-1 Web 表單的電子郵件寄送 14-2-2 大量郵件的寄送 14-2-3 取得 POP 3 未讀取的郵件數
7
14-2-1 Web 表單的電子郵件寄 送 - 名稱空間 ASP.NET 程式處理電子郵件,寄送郵件 是使用 System.Web.Mail 名稱空間的 MailMessage 和 SmtpMail 類別,在程式的 開頭需要匯入此名稱空間,如下所示: 在匯入名稱空間後,使用 MailMessage 類 別建立電子郵件,然後使用 SmtpMail 類 別寄送郵件。
8
14-2-1 Web 表單的電子郵件寄 送 - 寄送 MailMessage 物件 MailMessage 類別的物件是一封電子郵件 的內容,只需建立好物件,如下所示: Dim mail As MailMessage = New MailMessage() 接著設定物件的相關屬性建立郵件內容。 最後使用 SmtpMail 的 Send 方法寄出郵件, 如下所示: SmtpMail.SmtpServer = "ms2.hinet.net" SmtpMail.Send(mail)
9
14-2-1 Web 表單的電子郵件寄 送 -MailMessage 類別的屬性
10
14-2-2 大量郵件的寄送 如果屬於網站電子郵件廣告或電子報的 大量郵件寄送,我們可以使用資料庫儲 存收件者的郵件地址,透過 ASP.NET 的 郵件功能寄送數量龐大的電子郵件。 使用 System.IO 讀取郵件內容的.txt 文字檔 案( Unicode 編碼),然後使用 MailMessage 和 SmtpMail 類別,將電子郵 件同時寄給各筆記錄的電子郵件地址, 使用的是密件副本 Bcc 。
11
14-2-3 取得 POP 3 未讀取的郵件 數 -TcpClient 類別 ASP.NET 程式只需使用 System.Net.Sockets 名稱 空間的 TcpClient 類別,就可以透過 TCP/IP 連接 一些常用的 Internet 服務,只需在這些服務送出 指令字串,就可以取得所需的資訊,例如: FTP 是 21 、 WWW 是 80 , SMTP 是 25 和 POP 3 的 110 。 TcpClient 類別可以建立電子郵件的客戶端程式, 如下所示: Dim mailClient As TcpClient = New TcpClient()
12
14-2-3 取得 POP 3 未讀取的郵件 數 - 連線 POP3 POP 3 郵件伺服器是使用埠號 110 建立連線,建 立連線時需要使用錯誤處理,如下所示: Try mailClient.Connect(host, 110) Catch e As Exception msg.Text = " 連結郵件伺服器錯誤 : " & e.Message & " " Exit Sub End Try 上述程式碼建立遠端主機的連線,然後使用 GetStream 方法取得串流物件,如下所示: ns = mailClient.GetStream()
13
14-2-3 取得 POP 3 未讀取的郵件 數 - 取得郵件數 在取得串流物件後,使用 Read 和 Write 方法讀取 回應和送出指令,在送出 state 指令後,就可以 計算取得的郵件數,如下所示: responseMsg = sendCommand(ns, "stat" & vbCrLf) Dim msgArray() As String msgArray = responseMsg.Split(" ") Dim numOfMsg As String = msgArray(1) 上述程式碼在送出 stat 指令後,取得回應訊息 responseMsg ,在使用 Split 函數轉換成陣列後, 可以取得尚未讀取的郵件數。
14
14-3 客戶端的檔案上傳 14-3-1 上傳單一檔案 14-3-2 顯示上傳檔案的資訊 14-3-3 同時上傳多個檔案 14-3-4 電子郵件的附檔處理
15
14-3 客戶端的檔案上傳 ASP.NET 程式只需使用 System.IO 名稱空 間的 HttpPostedFile 類別就可以進行客戶 端的檔案上傳。
16
14-3-1 上傳單一檔案 - HtmlInputFile 控制項 ASP.NET 可以使用 HtmlInputFile 控制項在客戶 端選擇上傳檔案,其 HTML 標籤,如下所示: <input type="File" id="filename" size="30" accept="image/*" runat="Server"/> 上述標籤也是 Input 欄位,只是 type 屬性為 File , 這個標籤可以顯示一個選取檔案的欄位,如下 圖所示:
17
14-3-1 上傳單一檔案 -form 標籤 form 標籤需要使用 enctype 屬性指定編碼 方式,如下所示: ………….. 上述 enctype 屬性指定的是上傳檔案的編 碼方式。
18
14-3-1 上傳單一檔案 - 上傳 在 HtmlInputFile 控制項 filename 選好上傳檔案後, 上傳的檔案資料會隨著網頁送回伺服端,在伺 服端使用 PostedFile 屬性取得 HttpPostedFile 物件, 如下所示: Dim file As HttpPostedFile = filename.PostedFile 然後使用此物件的 SaveAs 方法將檔案資料寫成 伺服端的檔案,就完成檔案的上傳,如下所示: file.SaveAs(up_path & "/" & Path.GetFileName(file.FileName))
19
14-3-2 顯示上傳檔案的資訊 HttpPostedFile 類別提供許多屬性,可以取得上 傳檔案的資訊,其相關屬性,如下表所示:
20
14-3-3 同時上傳多個檔案 在選擇好多個上傳檔案後,就可以在伺服端取 得這些檔案的物件,如下所示: Dim objFileCollection As HttpFileCollection = Request.Files 取得上傳檔案的 HttpFileCollection 物件,這是 HttpPostedFile 物件陣列後,使用 For 迴路取得 每一個 HttpPostedFIle 物件,如下所示: For i = 0 To objFileCollection.Count - 1 file = objFileCollection(i) If file.ContentLength <> Nothing Then file.SaveAs(up_path & "/" & Path.GetFileName(file.FileName)) End If Next
21
14-3-4 電子郵件的附檔處理 當 Web 表單輸入郵件內容且選擇好附檔後,需 要先上傳此附檔,如下所示: uploadFile = temp_path & "/" & Path.GetFileName(fileName.FileName) fileName.SaveAs(uploadFile) 然後建立附檔的 MailAttachment 物件,如下所 示: Dim mailAttachedFile As MailAttachment=New MailAttachment(uploadFile) mail.Attachments.Add(mailAttachedFile) 上述程式碼建立好 MailAttachment 物件後,將 附檔新增到 Attachments 屬性的 IList 物件集合, 使用的是此物件的 Add 方法。
22
14-4 上傳圖檔到資料庫 14-4-1 在資料庫插入圖片檔案的記錄 14-4-2 顯示資料庫的圖片欄位
23
14-4 上傳圖檔到資料庫 - 說明 通常網頁資料庫儲存圖片內容,其作法 只是將圖片檔案和資料庫檔案分開儲存, 在資料表欄位儲存圖片檔案的路徑,在 網頁使用圖片標籤 顯示外部的圖片 檔案。 目前的資料庫都支援儲存二進位的圖片 資料,我們可以將圖片檔案直接上傳到 資料表欄位,如此就不用將圖檔分開的 儲存。
24
14-4 上傳圖檔到資料庫 - 資料表 的欄位 在資料表內需新增圖片資料的欄位,在 Products.mdb 的 Access 資料庫新增二個欄位,如 下表所示:
25
14-4-1 在資料庫插入圖片檔案 的記錄 - 讀取圖檔 HttpPostedFile 類別可以將圖檔視為串流的檔案 讀取,如下所示: Dim imageStream As Stream = UpFile.InputStream 然後就可以讀取圖檔的內容,如下所示: Dim fileLength As Integer = UpFile.ContentLength Dim buffer(fileLength) As Byte imageStream.Read(buffer, 0, FileLength) imageStream.Close()
26
14-4-1 在資料庫插入圖片檔案 的記錄 -SQL 指令 參數的 SQL 字串來插入記錄, Command 物件中 關於圖檔部分的參數,如下所示: objCmd.Parameters.Add(New OleDbParameter("@image", _ OleDbType.VarBinary)) objCmd.Parameters.Add(New OleDbParameter("@content", _ OleDbType.VarChar, 50)) 然後指定參數值,如下所示: objCmd.Parameters("@image").Value = buffer objCmd.Parameters("@content").Value = UpFile.ContentType
27
14-5 ASP.NET 網頁行事曆 14-5-1 Calendar 控制項 14-5-2 ASP.NET 網頁行事曆
28
14-5 ASP.NET 網頁行事曆 網頁行事曆就是 Web 介面的 Outlook 行事 曆,提供行程管理和記錄行程的功能, ASP.NET 網頁行事曆只需使用資料庫儲 存行程資料,提供萬年曆介面新增行程 和查詢行程,而網頁萬年曆就是使用 Web 控制項的 Calendar 控制項。
29
14-5-1 Calendar 控制項 -1 Calendar 控制項的使用方式類似其它的 Web 控 制項,就算沒有設定屬性也可以使用預設值顯 示萬年曆,如下所示: 上述標籤使用預設值顯示萬年曆,如下圖所示:
30
14-5-1 Calendar 控制項 -2 Calendar 控制項是屬於 System.Web.UI.WebControls 名稱 空間的 Calendar 類別,提供眾多的屬性和事件,可以顯 示不同的外觀或指定事件處理,如下所示: <asp:Calendar id="Calendar1" runat="Server" onSelectionChanged="SelectedRange" TitleStyle-BackColor="Maroon" SelectorStyle-BackColor="Gainsboro" TodayDayStyle-BackColor="Tan" DayHeaderStyle-BackColor="Gainsboro" OtherMonthDayStyle-ForeColor="Gray" SelectedDayStyle-BackColor="Navy" NextPrevStyle-ForeColor="white" …….… NextPrevFormat="ShortMonth" SelectWeekText = " 選星期 " SelectMonthText = " 選月份 "/>
31
14-5-2 ASP.NET 網頁行事曆 - 事 件內容陣列 在 Calendar 控制項的每一個日期儲存格可以顯 示當日的事件說明文字,只需使用 DayRender 事件建立事件內容,如下所示: Dim eventDays(12,31) As String 上述程式碼宣告一整年日期的二維陣列,第一 維是月份,第二維是日期,然後從資料庫取得 事件說明來指定陣列值,如下所示: eventDays(7,1) = " 目前進度是 14 章 " eventDays(7,15)= " 完成前 16 章 " eventDays(7,26)= " 本書交稿日 "
32
14-5-2 ASP.NET 網頁行事曆 - 事 件處理程序 1 DayRender 事件處理程序 EventDayRender , 如下所示: Sub EventDayRender(sender As Object, e As DayRenderEventArgs) Dim currDay As CalendarDay = e.Day Dim currCell as TableCell = e.Cell 上述程式碼取得傳入參數 DayRenderEventArgs 物件的屬性值。
33
14-5-2 ASP.NET 網頁行事曆 - 事 件處理程序 2 接下來的 If 條件檢查是否是其它月份的日 期資料,如下所示: If currDay.IsOtherMonth Then ' 不是此月份 currCell.Controls.Clear() ' 清除資料 上述 If 條件使用 IsOtherMonth 屬性檢查日 期範圍,如果不是,使用 Clear 方法刪除 儲存格新增的控制項。
34
14-5-2 ASP.NET 網頁行事曆 - 事 件處理程序 3 如果是,就將 eventDays 陣列的內容寫入儲存格,如 下所示: Else ' 建立儲存格內容 Try Dim description As String = eventDays(currDay.Date.Month, _ currDay.Date.Day) If description <> "" Then currCell.Controls.Add(New LiteralControl(" " & _ description)) End If Catch err As Exception msg.Text = err.ToString() End Try End If End Sub
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.