在aws-sdk的S3
课程中,upload()
和putObject()
之间有什么区别?他们似乎做同样的事情。为什么我更喜欢一个而不是另一个?
答案 0 :(得分:25)
使用AWS SDK upload()
和putObject()
参数之间的区别如下:
答案 1 :(得分:22)
upload()
可让您控制对象的上传方式。例如,您可以定义并发和部件大小。
来自docs: 如果有效负载足够大,则使用智能并发处理部件来上传任意大小的缓冲区,blob或流。
我发现的一个具体好处是,upload()
将接受未定义内容长度的流,而putObject()
则不会。
这很有用,因为我有一个允许用户上传文件的API端点。框架以可读流的形式将文件传递给我的控制器,没有内容长度。我不必测量文件大小,而是直接将其传递给upload()
电话。
答案 2 :(得分:3)
在查找相同的信息时,我遇到了https://aws.amazon.com/blogs/developer/uploading-files-to-amazon-s3/
这个来源有点过时了(引用upload_file()
和put()
- 或者它可能是Ruby SDK?),但看起来putObject()
适用于较小的对象而不是upload()
。
建议upload()
并指明原因:
这是使用SDK将文件上传到的推荐方法 桶。使用这种方法有以下好处:
- 管理大于15MB的对象的分段上传。
- 以二进制模式正确打开文件以避免编码问题。
- 使用多个线程并行上传大部分对象。
然后介绍putObject()
操作:
对于较小的对象,您可以选择使用
#put
。
编辑:我的.abort()
.upload()
操作遇到问题,发现这有用:abort/stop amazon aws s3 upload, aws sdk javascript
现在,来自https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Request.html的各种其他活动也开始了!使用.upload()
我只有'httpUploadProgress'。