首页 > 解决方案 > 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

标签: javaftpuploadftp-clientapache-commons-net

解决方案


  • 重新连接您的 FTP 会话(如果它也被破坏了);
  • 测试远程文件的大小以确定有多少字节一直到远程磁盘(例如使用FTPClient.mlistFileSIZE命令 - 请参阅如何获取 FTPFile 的信息);
  • 寻找“输入流”回到那个点(虽然InputStream不支持寻找,所以你将不得不使用不同的流实现 - 或重新打开InputStreamandskip到该位置);
  • 打电话FTPClient.appendFile

推荐阅读