gpt4 book ai didi

java - Apache FTPS 客户端 storeFile 从 Unix/Linux/Max 问题到 Windows FTPS 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:04 25 4
gpt4 key购买 nike

我在将文件从 Unix/Mac/Linux 环境传输到 Windows FTP 服务器时遇到问题。

而完全相同的 Java 代码可以在 Windows PC 上运行。 来自 *Nix/Mac 的传输仅适用于 ftp session 中的此命令

set ftps:initial-prot 
set ftp:ssl-force true
set ftp:ssl-protect-data true
set ssl:verify-certificate no

虽然在我的 Windows 机器上我不需要它们 - 我认为它与系统变量有关。

这是我的java代码

protected FTPClient getClient(DeliveryDetails details) {
return new FTPSClient(false); // the connection is Explicit
}

public void setClient(FTPClient client, DeliveryDetails details) throws Exception {
client.setConnectTimeout(10000);
client.setDefaultTimeout(1000 * 60 * 2);
client.setControlKeepAliveTimeout(300);
client.setDataTimeout(15000);
client.connect(ftpDetails.host, ftpDetails.port);
client.setBufferSize(1024 * 1024);
client.login(ftpDetails.username, ftpDetails.getSensitiveData());
client.setControlEncoding("UTF-8");
client.setFileType(FTP.BINARY_FILE_TYPE);
client.setFileTransferMode(FTP.BLOCK_TRANSFER_MODE);
FTPSClient ftpsClient = (FTPSClient) client;
ftpsClient.execPBSZ(0);
ftpsClient.execPROT("P");
// both with it and without it didnt work ftpsClient.setWantClientAuth(false);
}

public void saveToServer(FTPClient client, File fileName, InputStream stream){
BufferedInputStream bis = new BufferedInputStream(stream);
boolean isSaved = client.storeFile(filename, bis);
client.logout();
}

‌在 FTPS Apache 类中这个参数等效于什么?

set ftps:initial-prot 
set ftp:ssl-force true
set ftp:ssl-protect-data true
set ssl:verify-certificate no

最佳答案

看来 Windows NT 不支持在 FTP.BLOCK_TRANSFER_MODE 中写入数据

简单的修复是

    private static final String WINDOWS_NT_SYTEM_TYPE = "Windows_NT";
....
....
try {
String res = client.getSystemType();
if (res.equals(WINDOWS_NT_SYTEM_TYPE)) {
client.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);
} else {
client.setFileTransferMode(FTP.BLOCK_TRANSFER_MODE);
}
}

关于java - Apache FTPS 客户端 storeFile 从 Unix/Linux/Max 问题到 Windows FTPS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41422128/

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