11/02/2009

ASP .NET - 如何開啟另存新檔的對話視窗來下載MP3檔案

一般若只在MP3檔上加個連結﹝link﹞,IE會自動開啟相關的軟體﹝如:Windows Media Player﹞來播放,無法pop-up出另存新檔﹝Save As﹞的對話視窗。
而要開啟另存新檔的對話視窗來下載MP3檔,首先得先建立一個如下的aspx檔﹝在此範例中,命名為ringtone.aspx﹞:
<%@ Page Language="VB" %>

<script runat="server">

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Response.ContentType = "audo/mp3"
Response.AppendHeader("Content-Disposition", "Attachment; FileName=ringtone.mp3")
Response.TransmitFile(Server.MapPath("download/ringtone.mp3"))
Response.End()
End Sub

</script>
建好如上的aspx檔後,只需將下載MP3檔的圖形連結﹝或文字連結﹞指定到該aspx檔即可:
'HTML檔指定如下:
<a href="ringtone.aspx"><img src="ringtone_download.jpg" border="0"></a>

'aspx檔指定如下:
Response.Redirect("ringtone.aspx")
切記,不需再另外使用window.open()的方式來開啟該aspx檔,如此反而會多留下一個空白視窗。
範例說明:
  • Response.ContentType - 指定所開啟的檔案類型,常見類型有:
  • text/HTML開啟HTML檔,此為預設值
    application/msword開啟doc檔
    application/vnd.ms-excel開啟xls檔
    application/vnd.ms-powerpoint開啟ppt檔
    application/pdf開啟pdf檔
    text/plain開啟txt檔
  • Response.AppendHeader(HeaderName, HeaderValue) - 指定標頭﹝同META標頭﹞:
  • HeaderName指定要加入輸出資料流的HTTP標頭﹝Header﹞名稱
    HeaderValue指定附加到標頭﹝Header﹞的字串
  • Content-Disposition: attachment - 強制下載檔案,其屬性有:
  • FileName檔案名稱
    CreationDate新建日期
    ModificationDate修改日期
    size檔案大小
  • HttpResponse.TransmitFile(filename) - 將指定的檔案直接寫入HTTP回應﹝Response﹞輸出資料流,而不在記憶體中緩衝。
  • Server.MapPath(path) - 傳回伺服器﹝server﹞上對應至虛擬路徑﹝即path所指定之路徑﹞的實體檔案路徑﹝physical directory﹞。
  • Response.End() - 停止伺服器﹝server﹞的處理,並將處理內容傳回給使用者。
  • Response.Redirect(url) - 將網頁轉到指定的網址﹝即url所指定之網址﹞。
延伸說明:
  • 其他Response物件常見的屬性有:
  • Response.Charset指定網頁的編碼方式,如:Response.Charset = "utf-8"
    Response.CodePage指定網頁的編碼方式,如:Response.CodePage = 65001
    Response.Cookies(cookie)指定網頁的cookie值,如:Response.Cookies("myCookie") = "chocolate chip"
  • Response.AddHeaderResponse.AppendHeader相同,適用於ASP。
添加到收藏夾 / 分享

沒有留言:

張貼留言