当前位置: 首页 > 知识库问答 >
问题:

Android系统支持AWS多部分上传吗?

湛博易
2023-03-14

有没有人知道一个教程,或一个示例项目,我可以从中获得想法,使一个多部分的上传工作?是否需要使用TransferManager来执行此操作?

提前多谢!

共有1个答案

蒋招
2023-03-14

经过大量测试,我得出的结论是,AWS API不允许在传输过程中停止上传

在使用低级和高级(TransferManager)上载时可用的abortMultipartUpload()和abortMultipartUpload()方法并不像它们的名字所暗示的那样:这些方法所做的是禁止上载的任何其他部分启动,但仅当部分已经完成上载时。他们不会在传输过程中中止上传。

提供了两个应该立即停止上传的方法(shutdown()和shutdownNow()),但这些方法似乎不会对正在进行的传输产生任何影响。

如果您使用低级的多部分上载方法,那么您可以暂停和恢复上载,但没有实际的方法来停止它。暂停仅在最后一部分完成传输时才停止上传序列,但此传输至少为5MB,因此如果您使用的是慢速数据连接,这5MB可能需要一段时间才能真正暂停。

我怀疑AWS提供的API主要是为公司用户的专业服务器应用程序设计的,对于移动应用程序的使用只是口惠而实不至。这可能是AWS故意不允许停止转让的一个步骤。

不管是什么情况,我发现只有一种方法可以阻止一个转移一旦开始。我预计会有一些人反对使用这种方法,但在AWS为Android提供更好的API之前,我还是坚持使用它:

finish();

紧随其后的是:

System.exit(0);

或:

Process.killProcess(Process.myPid());

这会导致Android转储回调用活动,并强制清理当前使用的所有资源。关键的是,它拔掉了TransferManager使用的资源上的插头,从而导致传输立即停止。如果您认为上载的任何部分已经完成,您可能仍然需要在同一bucket上调用abortMultipartUploads()或abortMultipartUpload(),以便让AWS清理部分上载,否则您可能仍在为该上载部分付费。

 类似资料:
  • 我需要关于使用PHP5.3上传AWS多部分的帮助,我使用的是1.WAMP服务器。2.PHP 5.3 3.操作系统:Windows 8我正在尝试将一个大文件上传到My Amazon S3存储桶。 尝试了很多方法。我按照http://docs.aws.amazon.com/AmazonS3/latest/dev/LLuploadFilePHP.html的代码程序 我写了PHP代码,但我不知道我犯了什么

  • 为了解决这个问题,我还添加了一个MultipartResolver 很可能是一些愚蠢的东西,但我找不到我错过的东西。

  • 我试图用python写的lambda (aws)完成多部分上传。下面是我正在使用的代码。大约有120个部件,总大小为30GB。下面的操作似乎没有在5分钟内完成,因此lambda关闭,上传似乎没有完成。S3提供异步多部分上传功能吗?我相信这将确保文件得到合并,不管lambda关闭。

  • 我在使用Spring的reactive框架处理文件上传时遇到了一些问题。我想我正在跟踪文档,但无法摆脱/问题。 似乎Spring在将这些转换为时遇到了问题..?我卡住了--任何帮助都是可取的!

  • 我正在使用这个音频记录和视频文件,它是工作的,但我想用OKHTTP取代它。我没弄明白。有人能帮我一下吗?

  • 我想从Kinesis多部分上传到我的Amazon S3存储桶。由于Amazon S3是一个文件系统,对于每个条目,它都会在给定的bucket名称下创建一个文件。 我的亚马逊S3为AWS粘合作业提供信息,因为只要亚马逊S3的特定文件夹中有新文件,它就会触发Lambda函数。对于流数据,每秒将有多个文件。 如何在 Kinesis 端控制文件的大小,以便 Kinesis 仅在达到特定阈值后推送 Amaz