【问题标题】:TransferUtility S3 resume does not workTransferUtility S3 恢复不起作用
【发布时间】:2016-09-12 14:38:27
【问题描述】:

我正在使用 TransferUitlty 类将文件上传到 S3。一切都很好,除了在我暂停上传并恢复它之后。文件从头上传,而不是从我暂停的地方上传。

这种恢复方法是为重新开始上传还是从暂停的地方恢复而设计的?

杀掉app后还能用resume方法恢复上传吗?

代码:

    private void uploadResume(int id,ProgressBar progress,File f,TextView filelength,ImageView updownststatus){
    if(sTransferUtility!=null){

        sTransferUtility.resume(id);
        observer= sTransferUtility.getTransferById(id);
        
        observer.setTransferListener(new UploadListener(progress, observer,f,filelength,updownststatus));
    }
}

【问题讨论】:

    标签: android amazon-web-services amazon-s3 awss3transferutility


    【解决方案1】:

    对不起,如果我试图偏离主题,所以我的回答基本上是文件下载。

    所以我试图从 Amazon S3 下载资源。我使用转移观察者来了解转移的状态。我能够暂停下载并监控它的状态。但是,即使在尝试使用 transferUtility.resume(transferId) 后,我也无法恢复下载。但后来我尝试了 transferObserver.refresh() 并且我能够继续下载我的文件。

    【讨论】:

    • 您好@Soumen,您可以将TransferListener 对象与TransferObserver 附加在一起,以监控状态和进度,而无需不断刷新状态。
    【解决方案2】:

    这是由 Amazon S3 设计的。如果是分段上传,您可以暂停和恢复上传。请参阅 S3 Multipart Upload Overview。假设您使用 TransferUtility 上传了一个 100Mb 的文件。该文件将分为 20 个部分,每个 5mb,并行上传。当 3 个部分完成且 3 个正在进行中时,您暂停上传。你稍后再恢复它。 TransferUtility 将从 5mb * 3 = 15mb 继续上传,它有 17 个部分要传输。那是因为每个部分都已完全上传,否则将被丢弃。

    【讨论】:

    • 如果部分没有完全上传,恢复后会重新启动。如果某个部分已完成,则该部分将不会再次上传,其余部分将开始上传。如果发生暂停和恢复,间接正在进行的部分将不得不重新启动。我理解正确吗?
    • 没错。不完整的部分将从头开始。
    • 是否可以跟踪每个部分的状态?使用 aws SDK?
    • 不。它是关于实现细节的,并没有为开发人员提供有用的信息。你的用例是什么?
    • 无特殊用途。我是出于好奇才问的。谢谢
    猜你喜欢
    • 2011-07-21
    • 2016-03-14
    • 2018-09-29
    • 1970-01-01
    • 2017-10-20
    • 2018-06-26
    • 2015-12-17
    • 2014-06-11
    • 2012-12-29
    相关资源
    最近更新 更多