在广泛讨论的文件上传主题中,有一个方面我缺少。我有一个JSF 2.2应用程序,它通过HTML5准确上传文件as shown here。它基本上使用HTML5 apis上传多个文件,然后JS调用Servlet将它们写在磁盘上(每个文件调用一次Servlet,因此不需要多个Part处理)。 现在我想在同一个元素中启用<input type=file>
。这可以完全隔离as shown here(尽管对于多个文件可能需要some tweak,但不确定后面的信息是否已过时)。
我的问题是,我显然想要编写只写一次的文件,而不是Servlet中的一个和Managed Bean中的另一个:
save()
方法来在Managed bean中编写所有内容吗?如果
所以,我会改变这一行xhr.open("POST", "uploadServlet", true)
对其他事情,但我不知道如何打电话和通过
零件。顺便说一句,现在JSF让我无法做各种繁琐的工作,我不完全确定Servlet的作用是什么。我应该指出的另一个细节是,将来我可能希望在Web服务中镜像Web功能。也许这会影响这个答案和我应该处理JSF的方式 - 这意味着我应该在Servlet中执行所有功能并从JSF和Web服务中调用它们,而不是在Managed Bean本身中执行功能。 < / p>
修改
仍在解决这个问题。我试图摆脱Servlet并在托管bean中使用一个方法。但是,我不知道如何将POST数据提交给托管bean。所以我在外部JS文件:
中有这些xhr.open("POST", "uploadServlet, true);
xhr.send(formData);
我应该将其重定向到该方法。这是我可以解决我的问题的另一种方法,但仍然有一些未知数,我怎么能将POST传递给方法?