有任何想法吗?
您可以用几乎任何您可以编写代码的方式实现前端,以说出本机S3分段上传...由于稳定性,我为此建议使用这种方法。
通过分段上传,“您”(我建议是开发人员,而不是最终用户)选择了一个部分大小,每个部分最小5MB,文件不能超过10,000个“部分”,每个部分的大小完全相同(在上传开始时选择的一个“您”,但最后一部分除外,但是最后一部分会剩下很多字节...因此,上传文件的最终最大大小取决于部分大小你选。
一个“部分”的大小实际上就是您可重新启动/可重试的块大小(win!)...,因此您的前端实现可以无限地重新发送失败的部分,直到正确通过为止。甚至不必按顺序上传零件,它们可以并行上传,并且如果您一次上传同一零件,则较新的零件将替换较旧的零件,并且对于每个块,S3返回您比较的校验和到您当地计算的值。在完成上传之前,该对象在S3中不可见。当您完成上载时,如果S3尚未包含所有部分(应有的部分,因为它们在上载时已被确认),则完成调用将失败。
不过,您要记住的一件事是分段上传显然永远不会超时,并且如果客户端实用程序“永远不会”完成/完成分段或主动中止分段上传,则您将需要为上传的存储付费不完整上传的块。因此,您想实现一个自动化的后端过程,该过程定期调用ListMultipartUploads来识别并中止那些出于任何原因从未完成或取消的上载,然后中止它们。
我不知道这对回答您的总体问题有多大帮助,但是开发自定义前端工具应该不是一件复杂的事情-S3 API非常简单。我可以这么说,因为我开发了一个实用程序来执行此操作(供内部使用-这不是产品插件)。我可能有一天会以开源形式发布它,但是无论如何它可能都不适合您的需求-它本质上是一个命令行实用程序,可由自动化/预定过程使用,以流式传输(“管道”)程序输出作为一系列多部分零件(文件很大,所以我的默认零件大小是64MB)直接进入S3,当生成输出的程序关闭输入流时,它会检测到并完成上传。:)我用它来传输通过压缩程序传递的实时数据库备份,
我认为,您希望为客户带来顺畅的体验,因此高度推荐S3多角色,并且,如果您知道如何在可以生成基于桌面或基于浏览器的UI的任何内容中进行编码,则可以读取本地桌面文件系统,并且具有用于HTTP和SHA / HMAC的库,那么您可以编写一个客户端来执行此操作,外观和感觉完全符合您所需的方式。
只要您有一个后端系统可以向您验证客户端实用程序的身份,您就不需要在AWS中为每个客户端手动进行任何设置,也许通过通过SSL连接发送到服务器上应用程序的用户名和密码即可。 Web服务器,然后为客户端实用程序提供自动生成的临时AWS凭证,客户端实用程序可以使用该凭证进行上传。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句