java - Java Apache FTP 客户端 - 恢复中断的上传
问题描述
如果出现问题,我需要在我的 FTP 客户端中恢复上传。ftp
在下面的示例中是 Apache FTPClient
。
public boolean upload(InputStream localFile, String remoteName, boolean createNew) {
if (StringUtils.isBlank(remoteName)) {
log.warn("Error while uploading file: localFile or remoteName is null");
return false;
}
synchronized (this) {
try {
if (createNew) {
return ftp.storeFile(remoteName, localFile);
} else {
return ftp.appendFile(remoteName, localFile); //todo is it right?
}
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
return false;
}
}
}
因此,如果ftp.storeFile
崩溃(例如,并非所有字节都已发送),我该如何继续使用相同的内容上传InputStream
?
解决方案
- 重新连接您的 FTP 会话(如果它也被破坏了);
- 测试远程文件的大小以确定有多少字节一直到远程磁盘(例如使用
FTPClient.mlistFile
或SIZE
命令 - 请参阅如何获取 FTPFile 的信息); - 寻找“输入流”回到那个点(虽然
InputStream
不支持寻找,所以你将不得不使用不同的流实现 - 或重新打开InputStream
andskip
到该位置); - 打电话
FTPClient.appendFile
。
推荐阅读
- java - Intellij IDEA 和 Spring 依赖注入
- php - 选择laravel后如何存储select2远程ajax数据
- reactjs - 如何在回调中调用 useSelector
- java - spring boot restful应用程序中如何响应pbf文件?
- reactjs - 使用 react-apollo useMutation hook 处理错误
- android - 如何在 Android 10、Target API 29 中从设备的共享存储(根目录)读取现有文件?
- python - 我收到登录路由 TypeError 的错误:'int' object is not subscriptable
- azure - 无法使用 ansible 从捕获的 azure 映像创建 VM
- java - 持有人cardview更改textview颜色错误
- bash - shell script to Start/Stop tomcat server