如何在客户端上获取/读取xml文件?

时间:2011-12-18 23:18:53

标签: javascript ajax servlets file-upload

我需要创建一个网页,用户提交一个XML文件,我用它来动态更新页面。

我正在学习一个教程,并将这段代码放在一个javascript文件中:

function uploadFile(){
    var path = "processXML?action=process&id=" + escape(fileChooser.value);
    req = initRequest();
    req.open("GET", path, true);
    req.onreadystatechange = callback;
    req.send(null);
}

我还在Java Servlet中设置了URLpattern / processXMl。虽然我正在学习新的东西,但这并不是我想要实现的目标。 open()方法是在服务器上指定一个文件。

如何从客户端读取/接收XML文件,以便我可以在服务器上的Java类中处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

单独发送所选文件的文件名(或某些不良浏览器中的文件路径)作为请求参数根本不起作用。您将无法以任何方式检索服务器端的文件内容(除非webbrowser和webbrowser碰巧在物理上在同一台机器上运行,但这当然不会在实际生产中发生)。您需要让客户端发送文件内容。文件名只是元数据信息。

在HTML5 / XHR2之前无法通过ajax发送文件内容,HTML5 / XHR2相对较新,并且在目前仍在广泛使用的所有浏览器中都不受支持。我建议通过隐藏iframe中的表单来模拟异步文件上传。有许多JavaScript插件,例如jQuery FormjQuery Uploadify

要获取servlet中的文件内容,通常会使用Apache Commons FileUpload,或者如果您已经在Servlet 3.0上使用了新的HttpServletRequest#getParts()方法。

另见: