410 likes | 641 Views
ASP.NET 網頁製作教本 – 從基本語法學起. 第13章 FTP 檔案上傳、 Email 自動傳送. 13-1 FTP 檔案上傳. FTP 檔案上傳的要素. 表單的 Enctype( 編碼型態)屬性須設定成 " multipart/form-data"。 佈置 File 型態的 HTML 輸入欄位,供使用者選取所要上傳的檔案 。. upload.aspx 例子 (1). < Html> <Body BgColor=White> <H3> 檔案上傳 -- 上傳一個檔案 < Hr></H3>
E N D
ASP.NET 網頁製作教本 – 從基本語法學起 第13章 FTP 檔案上傳、Email 自動傳送
FTP 檔案上傳的要素 • 表單的 Enctype(編碼型態)屬性須設定成 "multipart/form-data"。 • 佈置 File 型態的 HTML 輸入欄位,供使用者選取所要上傳的檔案 。
upload.aspx 例子 (1) <Html> <Body BgColor=White> <H3>檔案上傳 -- 上傳一個檔案<Hr></H3> <Form Enctype="multipart/form-data" runat="server"> 請輸入完整檔案路徑: <Input Type="File" id="FileUp" runat="server"><P> <asp:Button runat="server" Text="Upload" OnClick="UploadFile" /> <Hr> <asp:Label runat="server" id="Msg" /> </Form> </Body> </Html>
upload.aspx 例子 (2) <script language="VB" runat="server"> Sub UploadFile(sender As Object, e As EventArgs) Dim file As HttpPostedFile = FileUp.PostedFile If file.ContentLength <> 0 Then Msg.Text = "大小: " & File.ContentLength Msg.Text &= "<br>類型: " & File.ContentType Msg.Text &= "<br>名稱: " & File.FileName
upload.aspx 例子 (3) Dim FileSplit() As String = Split( File.FileName, "\" ) Dim FileName As String = FileSplit(FileSplit.Length-1) File.SaveAs( Server.MapPath(FileName) ) Else Msg.Text = "" End If End Sub </script>
Upload.aspx 網頁 表單的佈置(1) • 位於 <Form ...> 與 </Form> 之間的標示在完成以下的表單佈置:
Upload.aspx 網頁 表單的佈置(2) <Form Enctype="multipart/form-data" runat="server"> 請輸入完整檔案路徑: <Input Type="File" id="FileUp" runat="server"><P> <asp:Button runat="server" Text="Upload" OnClick="UploadFile" /> <Hr> <asp:Label runat="server" id="Msg" /> </Form>
Upload.aspx 網頁UploadFile 事件程序 (1) • 按下「Upload」鈕時,瀏覽器會上傳檔案,並啟動此一事件程序處理所上傳的檔案。
Upload.aspx 網頁UploadFile 事件程序 (2) <script language="VB" runat="server"> Sub UploadFile(sender As Object, e As EventArgs) Dim file As HttpPostedFile = FileUp.PostedFile If file.ContentLength <> 0 Then Msg.Text = "大小: " & File.ContentLength Msg.Text &= "<br>類型: " & File.ContentType Msg.Text &= "<br>名稱: " & File.FileName
Upload.aspx 網頁UploadFile 事件程序 (3) Dim FileSplit() As String = Split( File.FileName, "\" ) Dim FileName As String = FileSplit(FileSplit.Length-1) File.SaveAs( Server.MapPath(FileName) ) Else Msg.Text = "" End If End Sub </script>
UploadFile 事件程序注意一 • If file.ContentLength <> 0 Then: 利用此一條件式判斷檔案是否上傳成功,若 File.ContentLength = 0,表示檔案未上傳成功。
UploadFile 事件程序注意二 • 存檔的方法:請注意利用 file.FileName 所讀取的檔案名稱是上網者那一端的完整路徑檔案名稱,因此我們須利用以下敘述取出其中的檔案名稱(不含路徑): 然後再利用以下敘述將檔案儲存在Upload.aspx 的所在目錄: Dim FileSplit() As String = Split( file.FileName, "\" )Dim FileName As String = FileSplit(FileSplit.Length-1) File.SaveAs( Server.MapPath(FileName) )
節錄自 Uploads.aspx (1) <Form Enctype="multipart/form-data" runat="server"> 請輸入完整路徑檔案名稱:<br> <Input Type="File" id="FileUp1" runat="server"><br> <Input Type="File" id="FileUp2" runat="server"><br> <Input Type="File" id="FileUp3" runat="server"><br> <asp:button runat="server" Text="Upload" OnClick="UploadFile" /> <Hr> <asp:Label runat="server" id="Msg" /> </Form>
節錄自 Uploads.aspx (2-1) Sub UploadFile(sender As Object, e As EventArgs) Dim I As Integer Msg.Text = "" For I = 0 To Request.Files.Count - 1 Dim File As HttpPostedFile = Request.Files(I) If File.ContentLength > 0 Then ' 顯示上傳檔案的資訊 Msg.Text &= "檔案: " & File.FileName Msg.Text &= ", " & File.ContentLength Msg.Text &= ", " & File.ContentType & "<br>"
節錄自 Uploads.aspx (2-1) ' 儲存檔案 Dim FileSplit() As String = Split( File.FileName, "\" ) Dim FileName As String = FileSplit(FileSplit.Length-1) File.SaveAs( Server.MapPath(FileName) ) End If Next End Sub
Email 自動傳送 • 在網頁製作中,需要自動傳送 Email 給上網者的情況很多,例如: • 電子購物網頁 • 密碼網頁 • 電子賀卡
MailMessage 及 SmtpMail 物件 • 在ASP.NET 底下,欲傳送 Email,須使用 MailMessage 及 SmtpMail 物件,其中MailMessage用來設定Email的內容,而SmtpMail則是將Email傳送出去
MailMessage 及 SmtpMail 物件的程式架構 (1) <%@ Import Namespace="System.Web.Mail" %>Dim mail as New MailMessage ' 建立一個MailMessage物件' 設定郵件的屬性mail.To = 收件人e-mailmail.From = 送件人e-mailmail.Subject = 主旨mail.BodyFormat = 郵件格式(純文字或Html)mail.Body = 郵件內容
MailMessage 及 SmtpMail 物件的程式架構 (2) ' 藉助SmtpMail送出郵件On Error Resume NextSmtpMail.SmtpServer = SMTP Server的網址SmtpMail.Send(mail) If Err.Number <> 0 Then ' 郵件送出失敗, 接著利用Err.Description讀取錯誤訊息 Else ' 郵件送出成功 End If
SMTP Server 與郵件的傳送 • 把SMTP Server設定成HiNet的SMTP Server,如下: SmtpMail.SmtpServer = "msa.hinet.net"SmtpMail.Send(mail)
mail01.aspx (1) <%@ Import Namespace="System.Web.Mail" %> <Html> <Body BgColor="White"> <H2>ASP.NET Email 發送程式!<Hr></H2> <Form runat="server"> <Table Border=1> <Tr><Td>收件者:</Td> <Td><asp:TextBox id="mailTo" Size=40 runat="server"/></Td></Tr> <Tr><Td>寄件者:</Td> <Td><asp:TextBox id="mailFrom" Size=40 runat="server"/></Td></Tr> <Tr><Td>主旨:</Td> <Td><asp:TextBox id="mailSubject" Size=40 runat="server"/></Td></Tr> <Tr><Td>內文:</Td> <Td><asp:TextBox runat="server" id="mailBody" TextMode="MultiLine" Rows=8 Cols=60 /> </Td></Tr> </Table> <asp:Button runat="server" Text="送出" OnClick="Button_Click" /> </Form>
mail01.aspx (2) <Hr><asp:Label id="Msg" runat="server" ForeColor="Red" /><p> <Font Size=-1 Color=Blue>使用本範例之前,請先參閱書本「SMTP Server 與郵件的傳送」段落中的說明,設定好SmtpMail.SmtpServer 屬性。</Font> </Body> </Html> <script Language="VB" runat="server"> Sub Button_Click(sender As Object, e As EventArgs) Dim mail As MailMessage = New MailMessage mail.To = mailTo.Text mail.From = mailFrom.Text mail.Subject = mailSubject.Text mail.BodyFormat = MailFormat.Text mail.Body = mailBody.Text
mail01.aspx (3) On Error Resume Next SmtpMail.SmtpServer = "msa.hinet.net" SmtpMail.Send(mail) If Err.Number <> 0 Then Msg.Text = Err.Description Else Msg.Text = "郵件已經送出!" End If End Sub </script>
mail02.aspx 程式(1) • 增加了「格式」選擇鈕: <asp:RadioButtonList id="Format" runat="server" RepeatDirection="Horizontal" RepeatColumns="2"> <asp:ListItem Selected>Html 格式</asp:ListItem> <asp:ListItem>純文字格式</asp:ListItem> </asp:RadioButtonList>
mail02.aspx 程式(2) • 而設定屬性的程式修改成: mail.To = mailTo.Value mail.From = mailFrom.Value mail.Subject = mailSubject.Value If Format.SelectedItem.Text = "純文字格式" Then mail.BodyFormat = MailFormat.Text Else mail.BodyFormat = MailFormat.Html End If mail.Body = mailBody.Value
設定收件人姓名(2) • 將 Email 帳號改成「人名<Email 帳號>」,例如: mail.To = "王國榮<kjwang@gcn.net.tw>"mail.From = "阿毛<amou@kjwang.com>"mail.Subject = 主旨mail.BodyFormat = 郵件格式(純文字或Html)mail.Body = 郵件內容
多位收件人 • 如果同一郵件要傳送給多個人,可以將所有郵件地址串在一起,以 ',' 分隔,例如: mail.To = "王國榮<kjwang@gcn.net.tw>, 阿毛<amou@kjwang.com>"mail.From = "service@kjwang.com"mail.Subject = 主旨mail.BodyFormat = 郵件格式(純文字或Html)mail.Body = 郵件內容
副本收件人 • 設定副本收件人的方法是設定 Cc 屬性,例如: mail.To = "王國榮<kjwang@gcn.net.tw>"mail.From = "service@kjwang.com"mail.Cc = "阿毛<amou@kjwang.com>"mail.Subject = 主旨mail.BodyFormat = 郵件格式(純文字或Html)mail.Body = 郵件內容
密件副本收件人 • 設定密件副本收件人的方法是設定 Bcc 屬性,例如: mail.To = "王國榮<kjwang@gcn.net.tw>"mail.From = "service@kjwang.com"mail.Bcc = "阿毛<amou@kjwang.com>"mail.Subject = 主旨mail.BodyFormat = 郵件格式(純文字或Html)mail.Body = 郵件內容
增加附件到郵件中 • 在 Email 傳送中,若要將檔案附加到 Email 中一起傳送 -- 附加檔案,所需撰寫的程式如下: Dim attach As New MailAttachment(完整路徑檔案名稱)mail.Attachments.Add( attach )…SmtpMail.Send(mail)
mail03.aspx 網頁程式(1) • 新增 <Input Type=“File” ...> 欄位,如下: • 表單屬性的修改:表單需增加Enctype屬性的設定,如下: <Input Type="File" id="FileUp" runat="server"> <Form Enctype="multipart/form-data" runat="server">
mail03.aspx 網頁程式(2) • 新增程式:在 Button_Click 事件程序中,新增以下程式: Dim file As HttpPostedFile = FileUp.PostedFile If file.ContentLength <> 0 Then Dim FileSplit() As String = Split( File.FileName, "\" ) Dim FileName As String = FileSplit(FileSplit.Length-1) File.SaveAs( Server.MapPath(FileName) ) Dim attach As New MailAttachment(Server.MapPath(FileName)) mail.Attachments.Add( attach ) End If