A.S*_*.S. 5 post amazon-s3 ios
我有一个使用POST喜欢这里上传文件到S3产生像AWSAccessKeyID,ACL,策略签名参数服务器:http://doc.s3.amazonaws.com/proposals/post.html.现在有了这些参数,我需要以某种方式在Amazon服务器上运行此请求.似乎我无法使用原生AWS iOS SDK,因为它的S3客户端只能使用AWS密钥和机密进行初始化,这些密钥和密钥存储在服务器而不是设备上.
使用S3上的所有参数上传文件来调用此POST请求的最佳方法是什么?或者也许有方法可以使用AWS SDK.
A.S*_*.S. 18
好吧,万一它可以帮助某人,我设法这样做:
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];
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以使用任何其他类型的操作,如AFXMLRequestOperation,因为S3以XML格式返回响应.
如果缺少任何参数或包含无效数据 - 将不接受请求.
以下是此背景信息的链接:浏览器使用HTML POST表单上传到S3
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |