最近のトラックバック

2017年12月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Google AdSense2

« ASP.NET(C#)でファイルダウンロードしながら画面更新 | トップページ | Windows7完成&リリース日・発売日 »

ASP.NET(C#)でバイナリファイルをブラウザ表示

バイナリファイルをブラウザ表示するサンプルを作成してみた。



メインソースコードは以下の通り

// Response情報クリア
Response.ClearContent();
// HTTPヘッダー情報設定
Response.ContentType = {ここにMIMEを設定 };
// ファイル書込
Response.WriteFile(sFilePath);
// レスポンス終了
Response.End();


MIMEの一例を挙げると次の通り。
ファイル形式 一般的な拡張子 MIMEタイプ
テキストファイル .txt text/plain
HTML .htm,.html text/html
CSVファイル .csv text/comma-separated-values
TSVファイル .txt, .tsv text/tab-separated-values
XMLファイル .xml text/xml
PDFファイル .pdf application/pdf
ビットマップファイル .bmp image/bmp
GIFファイル .gif image/gif
JPEGファイル .jpg image/jpeg
PNGファイル .png image/png

参考:
MIMEタイプ一覧

なおIE限定だがExcelなどのOfficeドキュメントもブラウザ表示できる。
クライアントPCの設定やソースコード等は以下の記事に記述している。
ブラウザ上にExcel・Word・PowerPointドキュメントを表示/非表示する設定を調べてみた
ASP.NET(C#)でIEにOfficeドキュメントを表示


バイナリファイルをブラウザ表示するサンプルソースを記述する。
なお使い勝手の関係で処理を「バイナリファイルを開くページ(BinaryFile1Open.aspx)」「バイナリファイルを表示する画面ページ(BinaryFile1.aspx)」の2ページに分割している。

BinaryFile1Open.aspx
実行結果及びASP.NETソースコードの確認

<%@ Page Language="C#" Title="ブラウザでバイナリファイルを開く" AutoEventWireup="true" %>
 :
 :
<script type="text/javascript">
    /// <summary>
    /// [javascript]ダウンロードページを新規ウィンドウで開く
    /// </summary>
    /// <param name="sUrl">ダウンロードページのURL</param>
    function OpenWindow(sUrl)
    {
        window.open(sUrl, "", "");
    }
    /// <summary>
    /// [javascript]ダウンロードページをiframeタグ内で開く
    /// </summary>
    /// <param name="sUrl">ダウンロードページのURL</param>
    function InsertIFrame(sUrl)
    {
        document.getElementById('ifDownloadPage').contentWindow.location.href = sUrl;
    }
</script>
<script runat="server">
    /// <summary>
    /// テキストファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnTxt_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("txt");
    }
    /// <summary>
    /// HTMLファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnHtm_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("htm");
    }
    /// <summary>
    /// CSVファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnCsv_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("csv");
    }
    /// <summary>
    /// TSVファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnTsv_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("tsv");
    }
    /// <summary>
    /// XMLファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnXml_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("xml");
    }
    /// <summary>
    /// PDFファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnPdf_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("pdf");
    }
    /// <summary>
    /// ビットマップファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnBmp_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("bmp");
    }
    /// <summary>
    /// GIFファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnGif_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("gif");
    }
    /// <summary>
    /// JPEGファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnJpg_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("jpg");
    }
    /// <summary>
    /// PNGファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnPng_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("png");
    }
    /// <summary>
    /// スタイルシートファイルを開く
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnCss_Click(object sender, EventArgs e)
    {
        fnBinaryFileOpen("css");
    }
    /// <summary>
    /// ファイルを開く
    /// </summary>
    /// <param name="sFileName"></param>
    /// <param name="sMIME"></param>
    public void fnBinaryFileOpen(string sFileType)
    {
        // 指定形式でJavaScript登録
        string sScript = "<script type='text/javascript'>";
        if (rblOpenPlace.SelectedValue == "window")
        {
            sScript += string.Format(
                "OpenWindow('BinaryFile1.aspx?FileType={0}&time={1:HHmmss}');",
                sFileType, DateTime.Now);
        }
        else
        {
            sScript += string.Format(
                "InsertIFrame('BinaryFile1.aspx?FileType={0}&time={1:HHmmss}');",
                sFileType, DateTime.Now);
        }
        sScript += "<" + "/script>";
        // JavaScript登録
        ClientScript.RegisterStartupScript(GetType(), "fnBinaryFileOpen", sScript);
    }
</script>
<h1>ブラウザでバイナリファイルを開く</h1>
<!-- コンテンツ説明 -->
<div class="contents_info">
    ASP.NETからブラウザでTEXT/XML/PDF/JPEG等のバイナリファイルを開くサンプルです。<br />
</div>
<!-- コンテンツ -->
<asp:RadioButtonList id="rblOpenPlace" runat="server" RepeatDirection="Horizontal">
    <asp:ListItem Text="iframeで開く" Value="ifame" Selected="True" />
    <asp:ListItem Text="新規ウィンドウで開く" Value="window" />
</asp:RadioButtonList>
<asp:Button ID="btnTxt" runat="server" Text="テキストファイルを開く"  onclick="btnTxt_Click" /><br />
<asp:Button ID="btnHtm" runat="server" Text="HTMLファイルを開く"  onclick="btnHtm_Click" /><br />
<asp:Button ID="btnXml" runat="server" Text="Xmlファイルのを開く"  onclick="btnXml_Click" /><br />
<asp:Button ID="btnCsv" runat="server" Text="CSVファイルを開く" onclick="btnCsv_Click" /><br />
<asp:Button ID="btnTsv" runat="server" Text="TSVファイルを開く" onclick="btnTsv_Click" /><br />
<asp:Button ID="btnPdf" runat="server" Text="PDFファイルを開く"  onclick="btnPdf_Click" /><br />
<asp:Button ID="btnBmp" runat="server" Text="ビットマップファイルを開く" onclick="btnBmp_Click" /><br />
<asp:Button ID="btnGif" runat="server" Text="GIFファイルを開く"  onclick="btnGif_Click" /><br />
<asp:Button ID="btnJpg" runat="server" Text="JPEGファイルを開く" onclick="btnJpg_Click" /><br />
<asp:Button ID="btnPng" runat="server" Text="PNGファイルを開く" onclick="btnPng_Click" /><br />
<asp:Button ID="btnCss" runat="server" Text="スタイルシート(CSS)ファイルを開く" onclick="btnCss_Click" /><br />
<br />
<iframe id="ifDownloadPage" style=" width:100%; height: 400px;"></iframe>
 :
 :

BinaryFile1.aspx

<%@ Page Language="C#" Title="バイナリファイル表示" AutoEventWireup="true" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
    /// <summary>
    /// ページロード
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        string sFileType;   // ファイルタイプを取得
        string sFileName;   // ファイル名
        string sFilePath;   // ファイルパス
        string sMIME;       // MIME
        //-----------------------------------------------------------------------------------------
        // クエリ引数からファイルタイプ取得
        //-----------------------------------------------------------------------------------------
        sFileType = Request.QueryString["FileType"];
        //-----------------------------------------------------------------------------------------
        // ファイルタイプからファイル名とMIMEを設定
        //-----------------------------------------------------------------------------------------
        switch (sFileType)
        {
            case "txt":
                sFileName = "テキストファイル.txt";
                sMIME = "text/plain";
                break;
            case "htm":
                sFileName = "HTMLファイル.htm";
                sMIME = "text/html";
                break;
            case "csv":
                sFileName = "CSVファイル.csv";
                sMIME = "text/plain";
                break;
            case "tsv":
                sFileName = "TSVファイル.txt";
                sMIME = "text/plain";
                break;
            case "xml":
                sFileName = "XMLファイル.xml";
                sMIME = "text/xml";
                break;
            case "pdf":
                sFileName = "PDFファイル.pdf";
                sMIME = "application/pdf";
                break;
            case "bmp":
                sFileName = "ビットマップファイル.bmp";
                sMIME = "image/bmp";
                break;
            case "gif":
                sFileName = "GIFファイル.gif";
                sMIME = "image/gif";
                break;
            case "jpg":
                sFileName = "JPEGファイル.jpg";
                sMIME = "image/jpeg";
                break;
            case "png":
                sFileName = "PNGファイル.png";
                sMIME = "image/png";
                break;
            case "css":
                sFileName = "スタイルシートファイル.css";
                sMIME = "text/plain";
                break;
            default:
                sFileName = "テキストファイル.txt";
                sMIME = "text/plain";
                break;
        }
        //-----------------------------------------------------------------------------------------
        // 物理ファイルパス取得
        //-----------------------------------------------------------------------------------------
        sFilePath = MapPath(string.Format(@"./File/{0}", sFileName));
        //-----------------------------------------------------------------------------------------
        // バイナリファイルを開く処理
        //-----------------------------------------------------------------------------------------
        // Response情報クリア
        Response.ClearHeaders();
        Response.ClearContent();
        // バッファリング
        Response.Buffer = true;
        // HTTPヘッダー情報設定
        Response.ContentType = sMIME;
        // ファイル書込
        Response.WriteFile(sFilePath);
        // フラッシュ
        Response.Flush();
        // レスポンス終了
        Response.End();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>バイナリファイル表示</title>
</head>
<body>
<form id="form1" runat="server">
</form>
</body>
</html>





« ASP.NET(C#)でファイルダウンロードしながら画面更新 | トップページ | Windows7完成&リリース日・発売日 »

ASP.NETサンプル」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/532391/45585528

この記事へのトラックバック一覧です: ASP.NET(C#)でバイナリファイルをブラウザ表示:

« ASP.NET(C#)でファイルダウンロードしながら画面更新 | トップページ | Windows7完成&リリース日・発売日 »

Google AdSense


  • ---

Amazon ウィジェット

  • ウィジェット

@niyo_naのツイート

無料ブログはココログ

Google Analytics