获取XHR将formdata的输出作为可下载文件发送

时间:2013-08-20 08:15:26

标签: javascript html xmlhttprequest

我正在做一个将doc文件转换为另一个文件(基于用户偏好)的小型HTML项目。在将文件发送到Java servlet之前,该网站将让用户拾取文件,并选择他们关于如何处理文件的首选项。处理完文件后,servlet会将处理过的文件作为可下载文件发送,然后自动下载到用户的浏览器下载文件夹中。

首先,我使用HTML的表单标签,上面有各种输入。提交表单后,处理后的文件会自动下载到浏览器的下载文件夹中。

但后来我将拾取文件方法改为拖放,并使用XMLHttpRequest将formdata和删除的文件一起发送到servlet。 formdata已成功发送到servlet,servlet正常处理该文件。但在那之后,servlet没有将处理过的文件作为可下载文件发送到我的浏览器。我检查了检查员,在网络选项卡下的响应,它显示了已处理的文件内容,但我没有像我通常使用表单标签方法那样获得处理过的文件。

所以我想知道我在下面的XHR代码中做错了什么?我只想将servlet中处理过的文件作为可下载文件,而不是在我的页面上显示。 HTML表单标记工作正常,servlet将处理后的文件作为自动下载文件返回,但是对于XHR,处理后的文件仅显示在检查器中的网络下的响应选项卡中,没有可下载的文件或任何内容。

function formHandler(form) {
  var formdata = new FormData(form);
  formdata.append("inputFile", doc);
  var xhr = new XMLHttpRequest();
  xhr.open('POST', "excelServlet", true);
  xhr.send(formdata);
}

1 个答案:

答案 0 :(得分:0)

好的,我已经得到了答案。

AJAX无法直接从服务器下载响应,如表单的submit()方法。 =。='''响应将显示在检查员的响应中,但用户将无法下载。