Revision 3 as of 2011-12-08 02:32:47

Clear message
Locked History Actions

GWT/TIPS

TIPS

クライアント内のリソースをユーザにダウンロードさせる

ユーザに何かをダウンロードさせるには、URLを示してサーバからダウンロードさせるのが普通だが、 ここでは、クライアント内にあるリソースを(当然のことながらサーバを介さずに)ユーザにダウンロードさせてみる。 ここでは簡単なテキストをダウンロードさせる。

        String downloadText = "なんでもいい";
        String windowName = "test.txt";
        
        byte[]bytes;
        try {
          // なぜかutf-8ではだめ。これはバグとしてあがっている
          bytes = downloadText.getBytes("UTF-8");
        } catch (Exception ex) {
          ex.printStackTrace();
          return;
        }
        String base64 = new String(Base64Coder.encode(bytes));
        String dataUri = "data:application/octet-stream;base64," + base64;
        Window.open(dataUri, windowName, "");

Base64Coderhttp://www.source-code.biz/base64coder/java/を使う。ただし、この中の

  private static final String systemLineSeparator = System
      .getProperty("line.separator");

はGWTクライアント側で動作しないので、

  private static final String systemLineSeparator = "\n";

とでもしておく。 ちなみに、com.google.gwt.user.server.Base64Utilsというものがあるが、クライアントサイドで動作させる方法が不明。

以上でとりあえずダウンロードはできるが、ファイル名を指定する方法は不明。

マウスカーソル形状の変更