gpt4 book ai didi

java - 在java中将文件上传到ftp服务器时出错

转载 作者:行者123 更新时间:2023-11-30 06:30:43 35 4
gpt4 key购买 nike

当我尝试将文件上传到 ftp 服务器时,出现错误。该服务器是远程服务器,但它提供 ftp 访问。这是我正在使用的代码

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fileuploaddemo;

import org.apache.commons.net.ftp.FTPClient;
import java.io.FileInputStream;
import java.io.IOException;

public class FileUploadDemo {
public static void main(String[] args) {
FTPClient client = new FTPClient();
FileInputStream fis = null;

try {
client.connect("ftp.adress.comlu.com");
client.login("username", "mypass");

//
// Create an InputStream of the file to be uploaded
//
String filename = "D:/xxx/screen0.png";
fis = new FileInputStream(filename);

//
// Store file to server
//
client.storeFile(filename, fis);
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

这是程序输出。什么都没有上传,我得到的只是这些行。

run:
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.read(BufferedReader.java:175)
at org.apache.commons.net.io.CRLFLineReader.readLine(CRLFLineReader.java:58)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:310)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:290)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:479)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:552)
at org.apache.commons.net.ftp.FTP.port(FTP.java:877)
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:709)
at org.apache.commons.net.ftp.FTPClient._storeFile(FTPClient.java:565)
at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:557)
at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1795)
at fileuploaddemo.FileUploadDemo.main(FileUploadDemo.java:29)
BUILD SUCCESSFUL (total time: 1 second)

可能是什么问题?

最佳答案

尝试,

client.enterLocalPassiveMode()

在您开始传输之前。我怀疑您需要进入 PASV 模式进行数据传输。如果您在路由器 (NAT) 或防火墙后面,就会发生这种情况。默认情况下,FTP 服务器将尝试连接到您进行数据连接,这意味着您开始监听某个端口并邀请服务器连接到它以传输数据。但是如果你在防火墙或路由器后面,服务器无法直接连接到你。 PASV 模式指示 FTP 服务器改为在服务器上打开一个端口进行传输,然后客户端连接到它。

关于java - 在java中将文件上传到ftp服务器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282284/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com