我正在尝试编写一个程序来将特定文件上传到本地主机。
假设文件是 (test.txt),结果应该是http://localhost:8080/hostProject/test.txt
. 我进行了搜索,发现 commonsFileUpload
可以帮助我,但我不确定如何完成它。.
这里的程序独立于hostProject。
您可以使用以下代码选择文件。您需要清楚之后要对文件做什么:
JFileChooser c = new JFileChooser();
int rVal = c.showOpenDialog(new JPanel());
if (rVal == JFileChooser.APPROVE_OPTION) {
inputFile = c.getSelectedFile();
System.out.println("File Selected : " + inputFile.getName());
}
您必须使用多部分 HTTP 表单来上传文件。您将其保存在哪里取决于您的服务器端代码,但我个人不会将其保存在您的 webapp 下。
FileUpload
基本上是一个特殊用途的 HTTP 表单处理程序,它对于处理文件上传很有用,但是这个问题还有另外两个部分,你的hostProject
servlet 和你的客户端。Servlet 3.0 还包括一些内置的多部分处理,因此您可以选择该路由。
如何处理 servlet 完全取决于您。一些有用的方法是全内存缓存(简单但大小有限,并且不会在重新启动之间持续存在),将文件写入文件系统并使用 Spring 之类的东西ResourceServlet
像任何其他磁盘文件一样为它们提供服务,或者将它们放在某个数据存储(可能是 MongoDB)中,并使用“文件名”作为键再次将它们取出。SpringMultipartResolver
可能有助于构建它。
在您的客户端中,您需要发出一个常规的 HTTPPOST
请求,就像任何其他 HTTP 交互一样,并将上传的文件“附加”为一个多部分实体。
请注意,此功能存在安全风险(您不希望随机的人能够上传您提供的文件),因此您需要确保对FileUpload
servlet 有足够的安全控制。