0

基本的に、動的に構築されたファイルのダウンロードをトリガーしようとしています。ファイルを作成するには、多くの情報をサーブレットに渡す必要があります。

これは、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」ファイル名のダウンロード ダイアログが開き、ファイルを保存または開くように要求しても何もダウンロードされません。

私は何かが欠けていると確信しています...どうすればこれを達成できますか??

ありがとうございました!エドゥアルド

4

0 に答える 0