使用 AFNetworking 发布请求 Amazon S3

Posted

技术标签:

【中文标题】使用 AFNetworking 发布请求 Amazon S3【英文标题】:Post request Amazon S3 with AFNetworking 【发布时间】:2015-01-17 08:56:09 【问题描述】:

我通过 AFNetworking 将图像发布到 Amazon S3,并收到一个奇怪的错误。文件正在上传,但一旦达到 100% 就会返回错误:

Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: method not allowed (405)"



AFAmazonS3Manager *s3manager = [[AFAmazonS3Manager alloc] initWithAccessKeyID:AWS_Access_Key secret:AWS_Secret_Key];
s3manager.requestSerializer.region = AFAmazonS3USWest1Region;
s3manager.requestSerializer.bucket = AWS_Bucket_Name;


//setting for image url name
NSString* destionationPathForS3 = @"1234567";

[s3manager postObjectWithFile:self.filePath
              destinationPath:destionationPathForS3
                   parameters:nil
                     progress:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) 
                         NSLog(@"%f%% Uploaded", (totalBytesWritten / (totalBytesExpectedToWrite * 1.0f) * 100));
                     
                      success:^(id responseObject) 
                          NSURL *resultURL = [s3manager.requestSerializer.endpointURL URLByAppendingPathComponent:destionationPathForS3];
                          NSLog(@"Upload Complete: %@", resultURL);
                      
                      failure:^(NSError *error) 
                          NSLog(@"Error: %@", error);
                      ];

【问题讨论】:

【参考方案1】:

不太清楚为什么,但更改以下内容对我有用:

postObjectWithFile:

putObjectWithFile:

【讨论】:

Bucket 公共“WRITE”访问:这有时被称为“put”或“upload”访问。它允许任何人在您的 Amazon S3 存储桶中添加/删除/替换对象。详情-aws.amazon.com/articles/Amazon-S3/5050

以上是关于使用 AFNetworking 发布请求 Amazon S3的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 AFNetworking 发出 POST 请求

在 Afnetworking 2.0 中取消发布请求

如何使用 afnetworking 取消网络请求

我们如何使用 AFNetworking 3.0 记录请求

使用 AFNetworking 的多部分 PUT 请求

使用 AFNetworking 避免重复的 HTTP 请求