我需要创建一个网页,用户提交一个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>
答案 0 :(得分:1)
单独发送所选文件的文件名(或某些不良浏览器中的文件路径)作为请求参数根本不起作用。您将无法以任何方式检索服务器端的文件内容(除非webbrowser和webbrowser碰巧在物理上在同一台机器上运行,但这当然不会在实际生产中发生)。您需要让客户端发送文件内容。文件名只是元数据信息。
在HTML5 / XHR2之前无法通过ajax发送文件内容,HTML5 / XHR2相对较新,并且在目前仍在广泛使用的所有浏览器中都不受支持。我建议通过隐藏iframe中的表单来模拟异步文件上传。有许多JavaScript插件,例如jQuery Form和jQuery Uploadify。
要获取servlet中的文件内容,通常会使用Apache Commons FileUpload,或者如果您已经在Servlet 3.0上使用了新的HttpServletRequest#getParts()
方法。