最近のトラックバック

2017年4月
            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            

Google AdSense2

« 2009年6月 | トップページ | 2009年8月 »

2009年7月

Windows7完成&リリース日・発売日

2009/7/22にWindows 7が完成したようだ。

以下のようなリリース予定らしい。(2009/07/23時点)

リリース日内容
2009/08/06
(米国日付)
MSDN登録メンバ・TechNet登録メンバに対し、英語版RTMを提供開始
2009/08/07
(米国日付)
SAライセンスを持つVolume Licenseユーザに対し、英語版RTMを提供開始
2009/09/01
(米国日付)
SAライセンス以外のVolume Licenseユーザに対し、英語版RTMを提供開始
2009/09/01
(米国日付)
SA以外のVolume License顧客に対し、英語版RTMを提供開始
2009/10/01
(米国日付)
MSDN登録メンバ・TechNet登録メンバに対し、10/1までに英語以外のRTMを提供開始
2009/10/22
(日本日付)
日本語版パッケージ販売

  • マイクロソフト、Windows(R)7 ならびにWindows Server(R) 2008 R2のRTM(開発完了)を発表
  • Microsoft Releases Windows 7 and Windows Server 2008 R2
  • When will you get Windows 7 RTM?
    • 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#)でファイルダウンロードしながら画面更新

      ASP.NET(C#)でファイルダウンロードしながら画面更新を行うサンプルコードを作成してみた。



      ネットでASP.NETでファイルダウンロードを調べると以下のようなサンプルコードが多く存在する。
      しかし、このソースコードではファイルダウンロードと同時に画面更新はできない。

      
      /// <summary>
      /// ファイルダウンロードボタンクリック
      /// </summary>
      void btnDownloadFile_Click(object senddr, EventArg arg)
      {
          //---------------------------------------------------------------------------------------------
          // テキストファイルをダウンロード
          //---------------------------------------------------------------------------------------------
          // ファイルパス設定
          string sFilePath = @"c:\temp.txt"";
          // HTTPヘッダー情報設定
          Response.AddHeader;
          // コンテンツタイプを設定
          Response.ContentType = "text/plain";
          // ファイル書込(データによりResponse.WriteFile()、Response.Write()、Response.BinaryWrite()を使い分ける。)
          Response.WriteFile(sFilePath);
          // レスポンス終了
          Response.End();
      }
      
      

      HTTPプロトコルの規約では1つのリクエスト(サーバ受信)に対し1つのレスポンス(サーバ応答)が基本である。
      上記コードではファイルダウンロードにレスポンスを食いつぶしているが、画面更新を行うためにも別途レスポンスが必要である。
      しかしボタンクリック等のポストバックでは1つのリクエストを2つのレスポンスに分割することはできない。

      解決方法は、2つのリクエストを発行し、2つのリクエストを作ればよい。

      具体的には以下の通り。
      (A)ダウンロード呼び出しページとダウンロードページの2ページに分割する。
      (B)ダウンロード呼び出しページのサーバ処理で「ダウンロードページを呼び出すクライアントスクリプト」をClientScript.RegisterStartupScript()等を使って登録する。
      (C)ポストバック後に(B)のクライアントスクリプト経由でダウンロードページをリクエストする。

      「ダウンロードページを呼び出すクライアントスクリプト」には以下の2つの方針がある。
      ①ダウンロードページを新しいウィンドウで開く。
      ②隠しiframeタグ内でダウンロードページを参照する。

      しかし①②にも以下の長所・短所がある。
      ①は複数ファイルの同時ダウンロードが可能だが、ブラウザの種類・バージョンによって新しく開いたウィンドウが残ってしまう。
      またブラウザの種類・バージョンによってはポップアップブロックされてしまうためダウンロードまでの操作が手間取る
      ②はウィンドウは表示されずセキュリティ規制もないが、複数ファイルの同時ダウンロードが出来ない。


      以下のソースコードは「ダウンロード呼び出しページ(DownloadFileAndRefresh.aspx)」から「ダウンロードページ(DownloadPage.aspx)」を呼び出し、テキストファイルをダウンロードするサンプルである。
      上述の「①ダウンロードページを新しいウィンドウで開く」「②隠しiframeタグ内でダウンロードページを参照する」の2つの方法で ダウンロードを行っている。

      ◆ダウンロード呼び出しページ(DownloadFileAndRefresh.aspx)
      実行結果及びASP.NETソースコードの確認
      
      
      <%@ Page Language="C#" Title="ファイルダウンロード&画面更新" AutoEventWireup="true" %>
      <%@ Import Namespace="System.IO" %>
        :
        :
      <script type="text/javascript">
          /// <summary>
          /// [javascript]ダウンロードページを新規ウィンドウで開く
          /// </summary>
          /// <param name="sUrl">ダウンロードページのURL</param>
          function OpenWindowDownloadPage(sUrl)
          {
              window.open(sUrl, "", "");
          }
          /// <summary>
          /// [javascript]ダウンロードページをiframeタグ内で開く
          /// </summary>
          /// <param name="sUrl">ダウンロードページのURL</param>
          function InsertIFrameDownloadPage(sUrl)
          {
              document.getElementById('ifDownloadPage').contentWindow.location.href = sUrl;
          }
      </script>
      <script type="text/C#" runat="server">
          /// <summary>
          /// 「例1 ダウンロードページを新規ウィンドウで開く」ボタンクリック
          /// </summary>
          /// <param name="sender"></param>
          /// <param name="e"></param>
          protected void btnOpenWindowDownloadPage_Click(object sender, EventArgs e)
          {
              //-----------------------------------------------------------------------------------------
              // ファイルダウンロード
              // ダウンロードページを新規ウィンドウで開く
              //-----------------------------------------------------------------------------------------
              // コンテンツ文字列作成
              string sTextContents = string.Format("{0:HH:mm:ss}に「例1」ボタンをクリック", DateTime.Now);
              // コンテンツ文字列作成をURLエンコード
              sTextContents = HttpUtility.UrlEncode(sTextContents);
              // JavaScript作成
              string sScript = string.Format(
                  "<script type='text/javascript'>OpenWindowDownloadPage('DownloadPage.aspx?text={0}&time={1:HHmmss}');<" + "/script>",
                  sTextContents, DateTime.Now);
              // JavaScript登録
              ClientScript.RegisterStartupScript(GetType(), "ex1", sScript);
              //-----------------------------------------------------------------------------------------
              // ダウンロード時間をラベルに表示
              //-----------------------------------------------------------------------------------------
              lblDownloadTime.Text = DateTime.Now.ToString("HH:mm:ssに「例1ボタンからダウンロード」");
          }
          /// <summary>
          /// 「例2 隠しiframeタグ内にダウンロードページを開く」ボタンクリック
          /// </summary>
          /// <param name="sender"></param>
          /// <param name="e"></param>
          protected void btnInsertIFrameDownloadPage_Click(object sender, EventArgs e)
          {
              //-----------------------------------------------------------------------------------------
              // ファイルダウンロード
              // 例2 隠しiframeタグ内にダウンロードページを開く
              //-----------------------------------------------------------------------------------------
              // コンテンツ文字列作成
              string sTextContents = string.Format("{0:HH:mm:ss}に「例2」ボタンをクリック", DateTime.Now);
              // コンテンツ文字列作成をURLエンコード
              sTextContents = HttpUtility.UrlEncode(sTextContents);
              // JavaScript作成
              string sScript = string.Format(
                  "<script type='text/javascript'>InsertIFrameDownloadPage('DownloadPage.aspx?text={0}&time={1:HHmmss}');<" + "/script>",
                  sTextContents, DateTime.Now);
              // JavaScript登録
              ClientScript.RegisterStartupScript(GetType(), "ex2", sScript);
              //-----------------------------------------------------------------------------------------
              // ダウンロード時間をラベルに表示
              //-----------------------------------------------------------------------------------------
              lblDownloadTime.Text = DateTime.Now.ToString("HH:mm:ssに「例2ボタンからダウンロード」");
          }
      </script>
      <h1>ファイルダウンロード&画面更新</h1>
      <!-- コンテンツ説明 -->
      <div class="contents_info">
          ASP.NETからファイルをダウンロードしながら画面を更新するサンプルです。<br />
      </div>
      <!-- コンテンツ -->
      <asp:Button ID="btnOpenWindowDownloadPage" runat="server" 
              Text="例1 ダウンロードページを新規ウィンドウで開く" onclick="btnOpenWindowDownloadPage_Click" /><br />
      <asp:Button ID="btnInsertIFrameDownloadPage" runat="server" 
              Text="例2 隠しiframeタグ内にダウンロードページを開く" 
              onclick="btnInsertIFrameDownloadPage_Click" /><br />
      <br />
      <asp:Label ID="lblDownloadTime" runat="server" />
      <br />
      <!-- 隠しiframe -->
      <iframe id="ifDownloadPage" style="visibility:hidden"></iframe>
      <br />
        :
        :
      
      

      ◆ダウンロードページ(DownloadPage.aspx)
      
      <%@ Page Language="C#" %>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <script runat="server">
          /// <summary>
          /// ページロード
          /// </summary>
          /// <param name="sender"></param>
          /// <param name="e"></param>
          protected void Page_Load(object sender, EventArgs e)
          {
              string sDownLoadFileContents = "";  // ダウンロードファイルの内容
              //-----------------------------------------------------------------------------------------
              // コンテンツ取得
              // ※今回はQueryString経由でダウンロードファイルの内容を取得しているが、他に、
              //  以下の様な設定が考えられる。
              //  ①QueryStringにデータベースの主キーを設定、ダウンロードページ内で主キーを
              //   基にコンテンツ取得
              //  ②セッション経由でコンテンツ取得
              //-----------------------------------------------------------------------------------------
              if (Request.QueryString["text"] != null)
              {
                  sDownLoadFileContents = HttpUtility.UrlDecode(Request.QueryString["text"]);
              }
              //-----------------------------------------------------------------------------------------
              // ダウンロード処理
              //-----------------------------------------------------------------------------------------
              // Response情報クリア
              Response.ClearContent();
              // バッファリング
              Response.Buffer = true;
              // HTTPヘッダー情報設定
              Response.AddHeader("Content-Disposition", "attachment;filename=download.txt");
              Response.ContentType = "text/plain";
              // コンテンツデータ書込
              Response.Write(sDownLoadFileContents);
              // フラッシュ
              Response.Flush();
              // レスポンス終了
              Response.End();
          }
      </script>
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head runat="server">
          <title>ダウンロードページ</title>
      </head>
      <body>
      <form id="form1" runat="server">
      </form>
      </body>
      </html>
      
      


    • ASP.NET(C#)でファイルダウンロード
    • ASP.NET(C#)でIEにOfficeドキュメントを表示
    • ASP.NET(C#)でIEのファイルダウンロードダイアログボタンをカスタマイズ
    • ASP.NET(C#)でバイナリファイルをブラウザ表示

    • « 2009年6月 | トップページ | 2009年8月 »

      Google AdSense


      • ---

      Amazon ウィジェット

      • ウィジェット

      @niyo_naのツイート

      無料ブログはココログ

      Google Analytics