Java Apache FTP 客户端 - 恢复损坏的上传

标签 java ftp upload ftp-client apache-commons-net

如果出现问题,我需要在 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 session (如果它也中断了);
  • 测试远程文件的大小,以确定有多少字节一直到达远程磁盘(例如使用 FTPClient.mlistFileSIZE 命令 - 请参阅 How to get info of an FTPFile );
  • 将“输入流”返回到该点(尽管InputStream不支持查找,因此您必须使用不同的流实现 - 或者重新打开InputStreamskip 到该位置);
  • 调用FTPClient.appendFile

关于Java Apache FTP 客户端 - 恢复损坏的上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52517649/

相关文章:

video - 如何使用 Android 应用程序的意图上传 WhatsApp 状态?

html - JSP文件上传

java - 在 OSGi 容器中使用 Solrj

java - Postgres 错误(设置 PLJava)

java - 如何在后台继续运行蓝牙 Activity ?

linux - 如何在rsync中通过FTP复制所有文件

c++ - WinInet 未定义标识符

c# - 如何使用 C# 和 WinSCP 使用模式获取远程目录的文件

java - android中按钮Onclick选择和取消选择状态

java - 根据 Controller 更改文件大小限制 (maxUploadSize)