【问题标题】:Using Java to upload file to remote server使用 Java 将文件上传到远程服务器
【发布时间】:2015-04-16 15:51:11
【问题描述】:

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

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

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

我已经进行了一些研究,并认为可以使用 java http servlet 来执行此操作 - 但是我个人之前没有使用 servlet 的经验,并且我发现的示例并不完全符合我的要求.

让我知道这是否可行,或者是否有更好的方法可以完成?任何如何执行此操作的链接或示例将不胜感激。

【问题讨论】:

  • 只是把事情说清楚-您将拥有设置:外部自动化-和http服务器。并且自动化会将文件上传到http服务器?
  • HTTP 服务器有可能运行 PHP 吗?因为你还需要一些东西来存储文件。
  • 我正在尝试找到一种方法来做到这一点,而无需更改 http 服务器端的任何内容。
  • 问题是你需要一些东西来处理服务器上的文件——因为没有它你就不能从本地机器上存储一些东西。
  • 那么 - 你有 PHP 在那个 http 服务器上可用吗?

标签: java servlets file-upload httprequest


【解决方案1】:

为了清楚起见:您必须有一个服务器端组件来处理您的文件上传,如果可能的话,我现在会将所有文件存储在世界各地的随机服务器上。处理该文件的组件可以是一个 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);
?>

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

要实现这一点,您可以使用这个简单的类 (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/StackoverflowJavaAnswers/tree/master/src/main/java/com/dominikangerer/q29679878

总结

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

【讨论】:

  • 谢谢,这看起来应该有帮助
  • 如果您需要更多帮助,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-29
  • 2011-04-04
  • 2018-06-24
相关资源
最近更新 更多