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