gpt4 book ai didi

android - Aws S3 TransferService 上传失败,没有错误

转载 作者:搜寻专家 更新时间:2023-11-01 08:37:32 27 4
gpt4 key购买 nike

我已经实现了 AWS 核心和 S3 SDK 来处理文件上传。不幸的是,上传有时无法正常工作。 (它似乎只在 wifi 连接下,但我对此不是 100% 确定)

由于某些未知原因,aws 服务正在收到成功的响应,即使文件尚未完成上传然后一切都挂起。

我可以看到传输服务已启动,例如,第一个文件开始正确上传并完成,但第二个文件从未完成上传,传输服务静默停止,我没有通过传输监听器收到任何错误...我已经为 aws 启用调试日志以查看我是否可以通过以下方式获取更多信息

   java.util.logging.Logger.getLogger("com.amazonaws").setLevel(java.util.logging.Level.FINEST);

这是一个上传日志,其中第一个文件上传成功,第二个文件上传失败 - 我只是在第一个文件通知完成时开始下一个文件。 (没有包名称和时间戳以便于分析):

D/AwsUploadManager: Uploading file: /storage/emulated/0/folder/profile20160219_123233.jpg
D/AwsUploadManager: Uploading under key: 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: AwsUploadManager 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/TransferSerivce: Starting Transfer Service
D/TransferSerivce: Loading transfers from database
D/TransferSerivce: 1 transfers are loaded from database
W/TransferSerivce: Transfer has already been added: 6
D/TransferSerivce: Network connected: true
D/AwsUploadManager: onStateChanged IN_PROGRESS
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent0 bytesTotal16917
D/com.amazonaws.request: Sending Request: PUT.........
D/libc: [NET] android_getaddrinfofornet+,hn 41(0x6369616f2d696d),sn(),hints(known),family 0,flags 4
D/libc: [NET] android_getaddrinfofornet-, err=8
D/libc: [NET] android_getaddrinfofornet+,hn 41(0x6369616f2d696d),sn(),hints(known),family 0,flags 1024
D/libc: [NET] android_getaddrinfofornet-, pass to proxy
D/libc: [NET] android_getaddrinfo_proxy+
D/libc: [NET] android_getaddrinfo_proxy get netid:0
D/libc: [NET] android_getaddrinfo_proxy-, success
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent16917 bytesTotal16917
D/com.amazonaws.request: Received successful response: 200, AWS Request ID: 85952ED0E0FCF444
D/AwsUploadManager: onProgressChanged id= 6 ::bytesCurrent16917 bytesTotal16917
D/AwsUploadManager: onStateChanged COMPLETED
D/AwsUploadManager: Upload finished: 56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: Uploaded url: https://server-name.s3.eu-central-1.amazonaws.com/56cb00d2121bbfcc0e8c68e7-843f1417-3f44-4d76-915d-f3a72c56a7d4
D/AwsUploadManager: Uploading file: /storage/emulated/0/folder/profile20160219_122512.jpg
D/AwsUploadManager: Uploading under key: 56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d
D/AwsUploadManager: AwsUploadManager 56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d
D/AwsUploadManager: onStateChanged IN_PROGRESS
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent0 bytesTotal1930575
D/com.amazonaws.request: Sending Request: PUT https://server-name.s3.eu-central-1.amazonaws.com /56cb00d2121bbfcc0e8c68e7-7ea27f9e-0e48-4fde-81a1-7d72383ada2d Headers: (x-amz-decoded-content-length: 1930575, Content-MD5....
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent655360 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1048576 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1310720 bytesTotal1930575
D/AwsUploadManager: onProgressChanged id= 7 ::bytesCurrent1703936 bytesTotal1930575
D/com.amazonaws.request: Received successful response: 200, AWS Request ID: DE9670A8450D4BAB
**D/TransferSerivce: Stop self** --And here amazon stopped self without notifying registered listeners about transfer..

用于调用上传的代码:

TransferObserver transferObserver = mTransferUtility.upload(BUCKET_NAME, fileKey, file);
transferObserver.setTransferListener(new TransferListener() {...}

除了我使用带有 pub/sec key 凭据的标准身份验证方法而不是 Cognito 池之外,一切都是标准的示例。

  mAwsCredentials = new BasicAWSCredentials(mContext.getString(R.string.aws_accress_key), context.getString(R.string.aws_secret_key));
mAmazonS3Client = new AmazonS3Client(mAwsCredentials);
mAmazonS3Client.setRegion(com.amazonaws.regions.Region.getRegion(REGION));
mTransferUtility = new TransferUtility(mAmazonS3Client, mContext);

顺便说一句,这个问题有时会在第一个文件上传时发生,有时会在 3 日上传,这与我尝试上传的文件数量无关。此外,有时 onProgressChanged 在上传挂起之前仅触发一次,我可以看到 Received successful response 和 Stop Self 之后。

问题: 有没有人以前遇到过这个问题,它可能与什么有关?我经常遇到这种情况(每隔两次),因此不确定它是否与网络相关。即使是这样,我也希望亚马逊能够正确处理网络错误或至少通知注册的听众。另外,我浏览了一些源代码,并从他们的文档中感觉到他们正在正确处理网络问题,所以我希望我这边做的事情非常错误。

最佳答案

v2.2.12 中的最新更改仅保留已注册传输监听器的弱引用。用户负责持有传输监听器直到传输完成。目的是防止内存泄漏。但是它的用法没有明确记录。我们计划在未来的版本中对其进行调整。请继续关注。

关于android - Aws S3 TransferService 上传失败,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35555414/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com