0

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

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

但是后来我将拾取文件的方法更改为拖放,并使用 XMLHttpRequest 将表单数据连同拖放的文件一起发送到 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);
}
4

1 回答 1

0

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

AJAX 不能像表单的 submit() 方法那样直接从服务器下载响应。=.=''' 该响应将显示在检查器的响应中,但用户将无法下载它。

于 2013-08-21T03:49:25.997 回答