基本的に、動的に構築されたファイルのダウンロードをトリガーしようとしています。ファイルを作成するには、多くの情報をサーブレットに渡す必要があります。
これは、GET を使用できないことを意味します。代わりに POST を使用する必要があります。
ただし、ダウンロードによってアプリケーションが台無しにならないように、新しいウィンドウを開く必要があります。問題は、私がこれを行うことができないということです: window.open( http://very.long.url.com/.../ , "_blank");
これは、URL の制限を超え、POST の代わりに GET が使用される原因となるためです。
サーブレットに送信する必要があるすべての情報は、「config.
私の解決策は、POST メソッドを使用して新しいウィンドウにフォームを作成し、非表示の入力を追加してから、次のように送信をトリガーすることでした。
var win = window.open("about:blank", "_blank");
win.document.write("<form method='post' id=donwload action='serveletURL'></form>");
$.each(config, function (name, value) {
var fragment = document.createDocumentFragment(),
temp = document.createElement('div');
temp.innerHTML = '<input type=\'hidden\' name=\'' + name + '\' value=\'' + value + '\'></input>';
while (temp.firstChild) {
fragment.appendChild(temp.firstChild);
}
win.document.getElementById("download").appendChild(fragment);
});
win.document.getElementById('download').submit();
また、Google Chrome と Firefox では動作しますが、IE では動作しません。IE (IE 10 でも) で、「serveletURL」ファイル名のダウンロード ダイアログが開き、ファイルを保存または開くように要求しても何もダウンロードされません。
私は何かが欠けていると確信しています...どうすればこれを達成できますか??
ありがとうございました!エドゥアルド