HOME >> Tips >> Microsoft.NET >> ASP.NET

[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")
    
    上記の例ではpdfファイルですがMIMEタイプを変更すると他のファイルも同様にダウンロードできます。
    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 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