我正在做一个将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);
}
答案 0 :(得分:0)
好的,我已经得到了答案。
AJAX无法直接从服务器下载响应,如表单的submit()方法。 =。='''响应将显示在检查员的响应中,但用户将无法下载。