【问题标题】:how to upload file to localhost [closed]如何将文件上传到本地主机[关闭]
【发布时间】:2013-08-28 07:34:38
【问题描述】:

我正在尝试编写一个程序来将特定文件上传到本地主机。

假设文件是​​(test.txt),结果应该是http://localhost:8080/hostProject/test.txt。 我进行了搜索,发现 commons FileUpload 可以帮助我,但我不确定如何完成它。 .

这里的程序独立于宿主项目。

【问题讨论】:

  • 您是尝试通过 Web 浏览器还是通过独立的 Java(可能是 Swing)程序上传文件?
  • 对这种含糊不清感到抱歉。我正在尝试通过独立的 swing java 程序上传。

标签: java localhost


【解决方案1】:

FileUpload 基本上是一个特殊用途的 HTTP 表单处理程序,它对于处理文件上传很有用,但是这个问题还有另外两个部分,您的 hostProject servlet 和您的客户端。 Servlet 3.0 还包括一些内置的多部分处理,因此您可以选择该路由。

您如何处理 servlet 完全取决于您。一些有用的方法是全内存缓存(简单但大小有限,并且不会在重新启动之间持续存在),将文件写入文件系统并使用 Spring 的 ResourceServlet 之类的东西来提供它们,就像其他任何东西一样-disk 文件,或者将它们放在某个数据存储(可能是 MongoDB)中,并使用“文件名”作为键再次将它们取出。 Spring 的 MultipartResolver 可能有助于构建它。

在您的客户端中,您需要像任何其他 HTTP 交互一样发出常规 HTTP POST 请求,并将上传的文件“附加”为多部分实体。

请注意,此功能存在安全风险(您不希望随机的人能够上传您提供的文件),因此您需要确保对您的 FileUpload servlet 进行足够的安全控制。

【讨论】:

    【解决方案2】:

    您可以使用以下代码选择文件。您需要清楚之后要对文件做什么:

    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链接。
    【解决方案3】:

    您必须使用多部分 HTTP 表单来上传文件。 将其保存在哪里取决于您的服务器端代码,但我个人不会将其保存在您的 webapp 下。

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 2012-01-02
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多