2013-08-20 37 views
0

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

起初,我使用了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); 
} 

回答

0

好吧,我得到的回答这个了。

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