[ASP.NET] ファイルをダウンロードさせる
2014/04/18
文書番号:20172
開発環境 :Visual Studio 2010
フレームワーク:.NET Framework 4.0
Webページでボタンクリックなどのイベントによってファイルをダウンロードさせる方法です。
静的なファイル指定であればアンカーでも貼っておけばいいですが、画面の動作によって異なるファイルをダウンロードさせる場合や、
イベント発生時にファイルを生成してそのファイルをダウンロードさせる場合にはこのような方法が必要です。
【処理手順】
-
ファイルをダウンロードさせる関数です。
サンプルではファイルが存在するディレクトリは固定にしています。
<summary>
ファイルをダウンロードさせます。
</summary>
<param name="FileName">ダウンロードするファイル名を指定します。</param>
<param name="MimeType">ダウンロードするファイルのMIMEタイプを指定します。</param>
Private Sub FileDownload(FileName As String, MimeType As String)
相対パスから物理ファイルパス取得
Dim FilePath As String = MapPath(String.Format("./pdf/{0}", FileName))
ダウンロードするファイル名
Dim dlFileName As String
ファイル名が日本語の場合を考慮したダウンロードファイル名を作成
If Request.Browser.Browser = "IE" Then
IEの場合はファイル名をURLエンコード
dlFileName = HttpUtility.UrlEncode(FileName)
Else
IE以外の場合はそのままでOK
dlFileName = FileName
End If
ダウンロード処理
Response情報クリア
Response.ClearContent()
バッファリング
Response.Buffer = True
HTTPヘッダー情報・MIMEタイプ設定
Response.AddHeader("Content-Disposition", String.Format("attachment;filename={0}", dlFileName))
Response.ContentType = MimeType
ファイルを書き出し
Response.WriteFile(FilePath)
Response.Flush()
Response.End()
End Sub
ファイル名とMIMEタイプを指定します。
ファイルダウンロード
Call FileDownload("manual.pdf", "application/pdf")
MIMEタイプの一例です。
拡張子 | ファイル | MIMEタイプ |
---|---|---|
テキストファイル | ||
.csv | CSVファイル | text/comma-separated-values |
.tsv | TSVファイル | text/tab-separated-values |
.txt | テキストファイル | text/plain |
.xml | XMLファイル | text/xml |
ドキュメントファイル | ||
.doc、.docx | Microsoft Word | application/msword |
.xls、.xlsx | Microsoft Excel | application/msexcel |
.ppt、.pptx | Microsoft PowerPoint | application/mspowerpoint |
PDF ファイル | application/pdf | |
画像ファイル | ||
.bmp | ビットマップファイル | image/bmp |
.gif | GIFファイル | image/gif |
.jpg | JPEGファイル | image/jpeg |
.png | PNGファイル | image/png |
その他のファイル | ||
.zip | ZIPファイル | application/zip |
.lzh | LZHファイル | application/lha |
.css | スタイルシートファイル | text/css |
.js | JavaScriptファイル | text/javascript |
.vbs | VBScriptファイル | text/vbscript |
.exe | 実行ファイル | application/octet-stream |