标签: awss3transferutility

AWS S3 分段上传在后台太慢 - iOS

我在我的 iOS 应用程序中使用 AWS S3TransferUtility 的uploadUsingMultipart(fileURL, bucket, ...)函数将视频文件上传到 S3 存储桶。只要应用程序处于前台,上传就会非常快。但是一旦应用程序进入后台,上传过程就会非常缓慢,并且需要太多时间才能完成。

例如,我在互联网连接上使用 100 MB 的文件进行了测试,上传速度为 10 Mbps,当应用程序在前台时使用多部分上传需要 35 秒,但使用多部分上传同一文件需要 14 分 40 秒该应用程序在后台。

有没有办法在后台加快上传过程?

amazon-s3 ios swift awss3transfermanager awss3transferutility

8
推荐指数
1
解决办法
995
查看次数

AWS S3 Android SDK 2.11.0

我的代码如下所示:

final AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(s3AccessKeyId, s3SecretAccessKey));
final TransferUtility util = TransferUtility.
                    builder().s3Client(s3Client).context(context).build();
Run Code Online (Sandbox Code Playgroud)

从'com.amazonaws:aws-android-sdk-s3:2.7.5'升级到'com.amazonaws:aws-android-sdk-s3:2.11.0'时,即使上传仍然有效:

E/nsferNetworkLossHandler: TransferNetworkLossHandler is not created. Please call `TransferNetworkLossHandler.getInstance(Context)` to instantiate it before retrieving
E/UploadTask: TransferUtilityException: [com.amazonaws.mobileconnectors.s3.transferutility.TransferUtilityException: TransferNetworkLossHandler is not created. Please call `TransferNetworkLossHandler.getInstance(Context)` to instantiate it before retrieving]
Run Code Online (Sandbox Code Playgroud)

当我更改代码以包括TransferNetworkLossHandler时:

TransferNetworkLossHandler.getInstance(context);
final AmazonS3Client s3Client = new AmazonS3Client(new BasicAWSCredentials(s3AccessKeyId, s3SecretAccessKey));
final TransferUtility util = TransferUtility.
                    builder().s3Client(s3Client).context(context).build();
Run Code Online (Sandbox Code Playgroud)

不做任何事情,我再也没有错误。

但是,这不是此错误消息的预期目的。它告诉您使用TransferNetworkLossHandler,但是没有有关如何使用它的文档。

如果上传不起作用,我只想向用户显示错误(例如Toast或AlertDialog)。所以我根本不需要处理程序。但是我也不希望每次都将错误消息写入日志。另外,我也不想使用这种简单的解决方案,即仅获取一个实例而不对其执行任何操作。

在我的情况下,此处理程序的正确用法是什么?

android amazon-s3 awss3transferutility aws-sdk-android

6
推荐指数
1
解决办法
1290
查看次数

单击按钮取消AWSS3 TransferUtility Upload任务

我的要求是在用户希望时取消上传。我正在关注TransferUtility文档以设置和上传视频,显示进度,即使应用程序在后台也能保持状态。我找不到任何取消上载任务的方法。

{
let uploadRequest = AWSS3TransferManagerUploadRequest()
let  transferUtility = AWSS3TransferUtility.default()
var completionHandler : AWSS3TransferUtilityUploadCompletionHandlerBlock?
var uploadTask : AWSTask<AWSS3TransferUtilityUploadTask>?
let expression = AWSS3TransferUtilityUploadExpression()

}


func startUpload() {

uploadTask = transferUtility.uploadFile((uploadRequest?.body)!,
                                   bucket: (uploadRequest?.bucket)!,
                                   key: (uploadRequest?.key)!,
                                   contentType: "video/mov",
                                   expression: expression,
                                   completionHander: completionHandler).continue({ (task) -> AnyObject! in if let error = task.error {
                                    print("Error: \(error.localizedDescription)")
                                    }
                                    if let _ = task.result {

                                    }
                                    return nil;
                                   }) as? AWSTask<AWSS3TransferUtilityUploadTask>


}
Run Code Online (Sandbox Code Playgroud)

我想知道我应该在任务上使用哪个继续块,以及如何像执行TransferManager任务一样执行类似uploadTask.cancel()之类的事情。

amazon-s3 ios swift aws-sdk awss3transferutility

3
推荐指数
1
解决办法
1084
查看次数

具有标识符的后台 URLSession 已存在

我有一个 S3Service,它是一个管理所有 S3 相关上传和下载的单例。当我上传第一个图像时,它工作正常,但如果我尝试连续上传图像,它会给我这个警告,并且完成块永远不会被调用。

具有标识符的后台 URLSessioncom.amazonaws.AWSS3TransferUtility.Identifier.TransferManager已存在。

这就是我上传方法的样子:

if let data = image.jpegData(compressionQuality: 0.5) {
        let transferUtility = AWSS3TransferUtility.s3TransferUtility(forKey: S3Service.TRANSFER_MANAGER_KEY)
        transferUtility.uploadUsingMultiPart(data: data, bucket: EnvironmentUtils.getBucketName(), key: filename, contentType: "image/jpg", expression: nil, completionHandler: { task,error in

            if let error = error {
                print(error.localizedDescription)
            } else {
                print("Image upload success")
            }
        })
}
Run Code Online (Sandbox Code Playgroud)

amazon-s3 nsurlsession swift awss3transferutility aws-sdk-ios

1
推荐指数
1
解决办法
1700
查看次数

如何使用公共权限将Android文件上传到S3存储桶

我一直在尝试将文件上传到s3存储桶.但该文件永远不会公开查看.我必须手动将存储桶中的文件/文件夹公开(对于每次上传)才能查看.

有没有办法上传具有默认权限的Android文件(位图),以供公开查看.如果可能的话,我更愿意以编程方式执行此操作.我检查了s3文档,找不到任何有用的东西.

android amazon-s3 amazon-web-services awss3transferutility

0
推荐指数
2
解决办法
3573
查看次数