使用 Java 上传文件到远程服务器

Using Java to upload file to remote server

我正在编写一个 java 自动化程序。这种自动化将位于它自己的服务器上,并正在对单独的应用程序服务器进行其余调用。

我的问题是,在某些情况下,我需要将某些文件上传到应用服务器上的特定文件夹。

我想在进行任何调用之前将此文件上传过程直接合并到自动化中。应用程序服务器仅设置为 http 服务器(IP 地址和凭据每天都会更改)。

我做了一些研究,认为可以使用 java http servlet 来执行此操作 - 但是我个人之前并没有使用 servlet 的经验,而且我发现的示例我认为也没有正是我要找的。

让我知道这是否是一项可行的任务,或者是否有更好的方法可以完成?非常感谢任何链接或示例如何执行此操作。

明确一点:您必须有一个服务器端组件来处理您的文件上传,如果可能的话,我现在会将我的所有文件存储在世界各地的随机服务器上。处理该文件的组件可以是一个 Java Servlet(例如一个简单的 Jersey 后端)- 但对于 将此文件存储在我的服务器上的某处 来说,这将是一个很大的开销。我建议您使用 PHP 来完成这项任务。

为此你可以使用这样的东西:

<?php 
    header('Access-Control-Allow-Origin: *');
    $path = $_POST['path'];
    $name = $_FILES['file']['name'];
    $info = pathinfo($name);
    $ext = $info['extension']; // get the extension of the file
    $target = $path.$name;
    move_uploaded_file( $_FILES['file']['tmp_name'], $target);
    http_response_code(200);
?>

这将允许您根据作为表单数据参数打印的路径将文件存储在某处。

要实现这一点,您可以使用这个简单的 class (https://github.com/kevinsawicki/http-request):

package com.dominikangerer.q29679878;

public class HttpRequest {
    ...
}

并像这样使用它:

package com.dominikangerer.q29679878;

import java.io.File;

public class Main {

    public static void main(String[] args) {
        new HttpRequest("http://example.com/storeFile.php", "POST")
        .part("file", "file.jpg", new File("/your/file.jpg"))
        .part("path", "/the/path/it/should/be/stored/on/the/server/")
        .code();
    }

}

您可以找到此示例(也可以在此处找到上面发布的库中的确切文件:https://github.com/DominikAngerer/WhosebugJavaAnswers/tree/master/src/main/java/com/dominikangerer/q29679878

摘要

  1. 如果没有处理文件的服务器端组件,不可能
  2. PHP 将是实现此类解决方案的最简单方法 - 不需要还需要应用程序服务器(tomcat 或类似的)和更多配置的 servlet。
  3. 对于所有 Http 请求您可以简单地在 java 中使用 https://github.com/kevinsawicki/http-request