GWT‎ > ‎HTML5‎ > ‎

Chromeでファイルのダウンロード

HTML5を使ったファイルのダウンロード for Chromeブラウザー(Firefoxは未テスト)

ファイルブロブとURLを使えば、簡単にダウンロードリンクを作成することができます。
リンクをクリックすると指定したファイル名でファイルをダウンロードさせることができます。

public static Anchor generateTextDownloadLink(String text,String fileName,String anchorText){
DownloadBlobBuilder bb=HTML5Download.BlobBuilder();
String mimeType="text/plain";
bb.append(text);

final Anchor link=new Anchor(anchorText);
String url=HTML5Download.URL().createObjectURL(bb.getBlob(mimeType));
link.setHref(url);
link.getElement().setAttribute("download", fileName);
link.getElement().setAttribute("dataset.downloadurl", mimeType+":"+fileName+":"+url);
return link;
}

BlobBuilderを作成して、データーを追加し、URLからMime-typeを指定すればオブジェクトのURLを作成できます。
それを、Aリンクのdownloadとかの属性を使えば、指定したファイル名でダウンロードさせることができます。


別のダウンロード方法との比較

FileAPI:Writerは試してません。起動オプションが必須とかだったので。どこかのバージョンで変わる・変わった?

HTML5ダウンロード(この方法)

長所
ファイル名を指定できる。他の方法で任意のファイル名で保存させる方法は不明

短所
ボタンおして、リンク作成で、リンク押してダウンロード開始なので、少し面倒

タブ開いて、テキストを流し込む

public native final void exportTextChrome(String text,String wname)/*-{
win = $wnd.open("", wname)
win.document.body.innerText =""+text+"";
}-*/;

長所
手軽で簡単

短所
出力した容量大きいと、コピーペーストの部分で固まる。

オクテットストリームでダウンロード

public static final void exportTextAsDownloadDataUrl(String text,String encode,String wname){
String url="data:application/octet-stream;charset="+encode+","+text;
Window.open(url, wname, null);
}

長所
自動でダウンロード開始できる

短所
ファイル名を指定できない

Comments