ASP.NET 網頁製作教本 -- 從基本語法學起 第13章 FTP 檔案上

Download Report

Transcript ASP.NET 網頁製作教本 -- 從基本語法學起 第13章 FTP 檔案上

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>
<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 網頁
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」鈕時,瀏覽器會上傳檔
案,並啟動此一事件程序處理所上傳的
檔案。
UploadFile事件程序所顯示的訊息
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
所讀取的檔案名稱是上網者那一端的完
整路徑檔案名稱,因此我們須利用以下
敘述取出其中的檔案名稱(不含路徑):
Dim FileSplit() As String = Split( file.FileName, "\" )
Dim FileName As String = FileSplit(FileSplit.Length-1)
然後再利用以下敘述將檔案儲存在
Upload.aspx 的所在目錄:
File.SaveAs( Server.MapPath(FileName) )
上傳多個檔案
3 個 <Input Type="File" ...> 欄位
節錄自 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
13-2 Email 自動傳送
Email 自動傳送

在網頁製作中,需要自動傳送 Email 給
上網者的情況很多,例如:
1. 電子購物網頁
2. 密碼網頁
3. 電子賀卡
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-mail
mail.From = 送件人e-mail
mail.Subject = 主旨
mail.BodyFormat = 郵件格式(純文字或Html)
mail.Body = 郵件內容
MailMessage 及 SmtpMail 物件
的程式架構 (2)
' 藉助SmtpMail送出郵件
On Error Resume Next
SmtpMail.SmtpServer = SMTP Server的網址
SmtpMail.Send(mail)
If Err.Number <> 0 Then
' 郵件送出失敗, 接著利用Err.Description讀取錯誤訊息
Else
' 郵件送出成功
End If
SMTP Server 與郵件的傳送
Email 軟體
或
SmtpMail

1
Smtp Server
2
收件人信箱
把 SMTP Server 設 定 成 HiNet 的 SMTP
Server,如下:
SmtpMail.SmtpServer = "msa.hinet.net"
SmtpMail.Send(mail)
Email 傳送實例
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" />
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 網頁
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
設定郵件格式
Html 格式
純文字格式
設定收件人姓名(1)
設定收件人姓名(2)

將 Email 帳號改成
「人名<Email 帳號>」 ,例如:
mail.To = "王國榮<[email protected]>"
mail.From = "阿毛<[email protected]>"
mail.Subject = 主旨
mail.BodyFormat = 郵件格式(純文字或Html)
mail.Body = 郵件內容
多位收件人

如果同一郵件要傳送給多個人,可以將
所有郵件地址串在一起,以 ',' 分隔,例
如:
mail.To = "王國榮<[email protected]>, 阿毛
<[email protected]>"
mail.From = "[email protected]"
mail.Subject = 主旨
mail.BodyFormat = 郵件格式(純文字或Html)
mail.Body = 郵件內容
副本收件人

設定副本收件人的方法是設定 Cc 屬性,
例如:
mail.To = "王國榮<[email protected]>"
mail.From = "[email protected]"
mail.Cc = "阿毛<[email protected]>"
mail.Subject = 主旨
mail.BodyFormat = 郵件格式(純文字或Html)
mail.Body = 郵件內容
密件副本收件人

設定密件副本收件人的方法是設定 Bcc
屬性,例如:
mail.To = "王國榮<[email protected]>"
mail.From = "[email protected]"
mail.Bcc = "阿毛<[email protected]>"
mail.Subject = 主旨
mail.BodyFormat = 郵件格式(純文字或Html)
mail.Body = 郵件內容
增加附件到郵件中

在 Email 傳送中,若要將檔案附加到
Email 中一起傳送 -- 附加檔案,所需撰
寫的程式如下:
Dim attach As New MailAttachment(完整路徑檔案名稱)
mail.Attachments.Add( attach )
…
SmtpMail.Send(mail)
mail03.aspx 網頁
增加 <Input Type="File" ...> 欄位
mail03.aspx 網頁程式(1)

新增 <Input Type=“File” ...> 欄位,如下:
<Input Type="File" id="FileUp" runat="server">

表單屬性的修改:表單需增加Enctype屬
性的設定,如下:
<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 )