亚马逊S3 POST上传iOS中(Amazon S3 POST upload in iOS)

2019-08-16 22:33发布

我有一个使用POST喜欢这里上传文件到S3产生像AWSAccessKeyID,ACL,策略签名参数服务器: http://doc.s3.amazonaws.com/proposals/post.html 。 现在有这些参数,我需要以某种方式运行亚马逊服务器上的这一要求。 看来,我无法使用原生的iOS AWS SDK,因为它是S3的客户端只能与AWS密钥和密码,这是存储在服务器,而不是设备进行初始化。

什么是调用与S3的所有参数此POST请求上传文件的最佳方式是什么? 或者,也许有很多方法可以使用AWS SDK为。

Answer 1:

好吧,如果它可以帮助别人,我设法做这种方式:

NSDictionary* parametersDictionary = @{@"AWSAccessKeyId" : @"YOUR_KEY",
                                                  @"acl" : @"public-read", // or whatever you need
                                                  @"key" : @"filename.ext", // file name on server, without leading /
                                               @"policy" : @"YOUR_POLICY_DOCUMENT_BASE64_ENCODED",
                                            @"signature" : @"YOUR_CALCULATED_SIGNATURE"
                                    };

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString: @"http://s3-bucket.s3.amazonaws.com"]];
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST"
                                                                     path:nil
                                                               parameters:parametersDictionary
                                                constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
                                                    [formData appendPartWithFileData:fileData
                                                                                name:@"file" //N.B.! To post to S3 name should be "file", not real file name
                                                                            fileName:@"your_filename"
                                                                            mimeType:@"mime/type"];
                                                }];
AFHTTPRequestOperation* operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

你可以使用任何其他类型的操作一样AFXMLRequestOperation,如果需要的话,因为S3以XML格式返回响应。

如果任何参数丢失或包含无效数据 - 要求将不被接受。

下面是对这个背景信息的链接: 浏览器上传使用HTML表单POST到S3



文章来源: Amazon S3 POST upload in iOS