Java:使用库将文件从URL直接上载到FTP服务器

Java:使用库将文件从URL直接上载到FTP服务器,java,url,upload,ftp,java-7,Java,Url,Upload,Ftp,Java 7,可以从url传输文件(http://... .exe/.zip…)直接发送到Java 7中的ftp服务器(使用一些额外的库,例如Apache?我不认为一般情况下可以指示web服务器将文件直接上载到FTP服务器,但完全可以编写一个程序自己下载文件,然后将其上载到FTP服务器。我不认为一般情况下可以指示web服务器r直接将文件上载到FTP服务器,但您完全可以编写一个程序自己下载文件,然后将其上载到FTP服务器。通过标准API类java.net.URL,对HTTP和至少有限的FTP支持都有支持。您只能

可以从url传输文件(http://... .exe/.zip…)直接发送到Java 7中的ftp服务器(使用一些额外的库,例如Apache?

我不认为一般情况下可以指示web服务器将文件直接上载到FTP服务器,但完全可以编写一个程序自己下载文件,然后将其上载到FTP服务器。

我不认为一般情况下可以指示web服务器r直接将文件上载到FTP服务器,但您完全可以编写一个程序自己下载文件,然后将其上载到FTP服务器。

通过标准API类
java.net.URL
,对HTTP和至少有限的FTP支持都有支持。您只能限制对特定FTP功能的访问,例如e设置传输模式,但在大多数情况下都有效

如果添加Apache Commons IO,可以使用
IOUtils
类直接从HTTP服务器复制到FTP服务器:

InputStream in = new URL("http://host/path").openStream();
OutputStream out = 
    new URL("ftp://user:pass@host/path").openConnection().getOutputStream();

IOUtils.copy(in, out);

in.close();
out.close();        
如果不想添加对Commons IO的依赖,只需写几行即可复制数据,无需第三方库支持:

byte[] buffer = new byte[16384];
int r = 0;
while ((r=in.read(buffer))>=0) {
    out.write(buffer, 0, r);
}

通过标准API类
java.net.URL
,可以同时支持HTTP和至少有限的FTP支持。您只能限制对特定FTP功能(如设置传输模式)的访问,但在大多数情况下,它是有效的

如果添加Apache Commons IO,可以使用
IOUtils
类直接从HTTP服务器复制到FTP服务器:

InputStream in = new URL("http://host/path").openStream();
OutputStream out = 
    new URL("ftp://user:pass@host/path").openConnection().getOutputStream();

IOUtils.copy(in, out);

in.close();
out.close();        
如果不想添加对Commons IO的依赖,只需写几行即可复制数据,无需第三方库支持:

byte[] buffer = new byte[16384];
int r = 0;
while ((r=in.read(buffer))>=0) {
    out.write(buffer, 0, r);
}

因此,我们需要额外的步骤,在从url下载后将其本地存储在计算机上,然后上载?虽然也可以直接从url上载文件,但如果您控制FTP/web服务器,您可以轻松地在其上设置软件,以便您可以远程指示它从给定的web服务器上提取,但您无法t指示任意web服务器上载到任意FTP服务器。我不想指示web服务器。应该可以使用apache commons(io?)下载net将文件直接从url传输到ftp…我只需要访问ftp服务器,并想使用java编写一个小型控制台应用程序来直接传输文件,而无需在本地下载和上传。据我所知,ftp和HTTP是完全独立的协议。要使用ftp,您需要客户端和客户端服务器。任意HTTP服务器将无法与您的FTP服务器通信。如果您可以访问服务器,为什么不直接通过SSH连接到服务器,然后
wget
下载任何您想要下载的HTTP文档?这样您就根本不需要编写程序了……我有一个服务器;-)java程序使用apacha commons net并连接到ftp服务器并上载文件。我在这一个上没有ssh。因此,我们需要额外的步骤,在从url下载后将其存储在计算机本地,然后上载?如果您控制ftp/web服务器,也可以直接从url上载文件,您可以轻松地在其上设置软件,以便您可以远程指示它从给定的web服务器提取,但您不能指示任意web服务器上载到任意FTP服务器。我不想指示web服务器。应该可以使用apache commons(io?)下载net将文件直接从url传输到ftp…我只需要访问ftp服务器,并想使用java编写一个小型控制台应用程序来直接传输文件,而无需在本地下载和上传。据我所知,ftp和HTTP是完全独立的协议。要使用ftp,您需要客户端和客户端服务器。任意HTTP服务器将无法与您的FTP服务器通信。如果您可以访问服务器,为什么不直接通过SSH连接到服务器,然后
wget
下载任何您想要下载的HTTP文档?这样您就根本不需要编写程序了……我有一个服务器;-)java程序使用apacha commons net并连接到ftp服务器并上载文件。我在这个问题上没有ssh。