【发布时间】:2020-09-07 03:21:36
【问题描述】:
我想上传一个文件到 ftps 服务器。下面的代码适用于像 10KB 这样的小文件。但我需要上传 5-10 MB 的文件。并且错误带有以下错误行。有人可以帮我弄这个吗?下面是我尝试过的代码。有没有更好的方法来做到这一点?
错误线
boolean result = con.storeFile(FILE_NAME, multipartFile.getInputStream());
代码
public void createDeviceVersion(MultipartFile multipartFile) {
String FTP_ADDRESS = backendConfigRepo.findByConfigKey(KeyConstant.FTP_ADDRESS).getConfigValue();
int FTP_PORT = Integer.parseInt(backendConfigRepo.findByConfigKey(KeyConstant.FTP_PORT).getConfigValue());
String USER = backendConfigRepo.findByConfigKey(KeyConstant.FTP_USER).getConfigValue();
String PASSWORD = backendConfigRepo.findByConfigKey(KeyConstant.FTP_PASSWORD).getConfigValue();
String FILE_NAME = backendConfigRepo.findByConfigKey(KeyConstant.MCASH_VERSION_FILE_NAME).getConfigValue();
FTPSClient con = null;
try {
con = new FTPSClient(true);
con.connect(FTP_ADDRESS, FTP_PORT);
if (con.login(USER, PASSWORD)) {
con.enterLocalPassiveMode();
con.setFileType(FTP.BINARY_FILE_TYPE);
boolean result = con.storeFile(FILE_NAME, multipartFile.getInputStream());
System.out.println(result);
con.logout();
con.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
错误信息
org.apache.commons.net.io.CopyStreamException: IOException 被捕获 复制时。在 org.apache.commons.net.io.Util.copyStream(Util.java:136) 在 org.apache.commons.net.ftp.FTPClient._storeFile(FTPClient.java:675) 在 org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:639) 在 org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:2160) .... 引起:java.net.SocketException: Connection reset by peer: socket write error
【问题讨论】:
-
您为什么不尝试使用一些 ssh 库,例如 JSch、SSHJ?有什么限制吗?
-
我对 ftps 服务器了解不多。我只想将文件上传到 ftps 服务器。你说的限制是什么意思?这个错误伴随着 storeFile 行。
标签: java spring-boot ftps