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

时间:2015-04-16 15:51:11

标签: java servlets file-upload httprequest

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

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

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

我已经做了一些研究,并认为使用java http servlet来执行此操作 - 但我个人之前没有使用过servlet的经验和我发现的例子我认为不是我正在寻找的。

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

1 个答案:

答案 0 :(得分:0)

要说清楚:你必须有一个服务器端组件来处理你的Fileuploads,如果可能的话我现在可以将我的所有文件存储在世界各地的随机服务器上。处理文件的组件可以是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是实现这种解决方案的最简单方法 - 不需要一个也需要应用服务器(tomcat或类似服务器)和更多配置的servlet。
  3. 对于所有Http请求您只需在java中使用https://github.com/kevinsawicki/http-request