c#-4.0 - C# - AWS S3 使用 PutObject 或 TransferUtility.Upload 方法上传文件。哪种方式更好?

标签 c#-4.0 amazon-s3

我知道有两种方法可用于在 AWS S3 中上传文件(即 PutObject 和 TransferUtility.Upload)。有人可以解释一下使用哪一个吗?

仅供引用,我的文件大小从 1kb 到 250MB 不等。

提前致谢。

最佳答案

Amazon deprecated the S3 Transfer Manager and migrated to the new Transfer Utility.The Transfer Utility is a simple interface for handling the most common uses of S3.It has a single constructor, which requires an instance of AmazonS3Client. Working with it is so easy and let the develpers perform all operations with less code.

以下是通过 Transfer Manager 使用 Transfer Utility 的主要功能

  • 上传大文件时,TransferUtility 使用多线程 一次上传单个上传的多个部分。处理时 大内容和高带宽,这可以提高吞吐量 TransferUtility 检测文件是否很大并切换到 分段上传模式。 分段上传的好处是 更好的性能,因为这些部分可以同时上传 好吧,如果有错误,只需要个别部分 已重试。
  • 我们大多数人都会尝试在 S3 上上传大文件,这会占用太多时间 是时候上传了,在这种情况下我们需要进度信息 例如传输的字节总数剩余量 数据传输。跟踪当前传输进度 传输管理器,开发人员将 S3ProgressListener 回调传递给 上传或下载,这会定期触发以下方法。
  • 无法使用传输管理器暂停传输 基于流的上传或下载。但 Transfer Utility 为我们提供了 暂停和恢复选项,它还有一种基于单文件的方法 上传和下载。

transferUtility.upload(MY_BUCKET,OBJECT_KEY,FILE_TO_UPLOAD) transferUtility.download(MY_BUCKET,OBJECT_KEY,FILE_TO_UPLOAD)

  • 传输管理器仅需要 INTERNET 权限。然而, 因为传输实用程序自动检测网络状态并且 根据网络状态暂停/恢复传输 传输实用程序的暂停功能很简单,因为所有传输都可以暂停和恢复。传输由于网络连接丢失而暂停,它将自动恢复,您无需执行任何操作。自动暂停的传输等待网络连接将具有该状态。此外,传输实用程序将有关传输的所有元数据存储到本地 SQLite 数据库,因此开发人员无需保留任何内容。

注意: 其他一切都很好。但是 Transfer Utility 不支持 copy() API。要完成它,请使用 AmazonS3ClientcopyObject() 方法。

关于c#-4.0 - C# - AWS S3 使用 PutObject 或 TransferUtility.Upload 方法上传文件。哪种方式更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16307992/

相关文章:

java - 属性文件点分隔的键名

c# - XmlSerializer 缓存工厂

amazon-web-services - SSL 证书问题,存储桶名称包含点 ('.'),同时尝试使用虚拟托管 url 而不是 AWS S3 存储桶的路径样式

ruby - 使用 aws-sdk gem 更改 s3 文件对象所有者

amazon-web-services - 使用 JWT 进行自定义身份验证以从 S3 下载

javascript - 如何修复 javascript 和 c# 上发生的计算错误

c# - .Net 中的并行性是否可以接管 CPU 并可能拒绝为其他进程提供服务?

c# - 在 WCF 服务中将委托(delegate)人从客户端获取到服务器

python - 使用 Python 从 S3 下载 CSV 文件

c# - 在 .NET Core 中配置 AWS S3 客户端