如何下载一个包含很长URL的文件?

时间:2013-07-16 16:45:50

标签: javascript url post web download

基本上我试图触发动态构建的文件的下载。为了构造文件,我需要将大量信息传递给servlet。

这意味着我不能使用GET,我应该使用POST。

为了让下载不要弄乱应用程序,我必须打开一个新窗口。问题是我不能这样做: window.open(http://very.long.url.com/.../,“_ blank”);

因为这会导致超出URL限制并使用GET而不是POST。

需要发送到servlet的所有信息都在一个名为“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();

它适用于谷歌Chrome和Firefox,但它不适用于IE。在IE(甚至是IE 10)上,当我要求保存或打开文件时,会打开一个带有“serveletURL”文件名的下载对话框,并且不会下载任何内容。

我确定我错过了什么......我怎么做到这一点?

谢谢! 爱德华

0 个答案:

没有答案