Ios 亚马逊S3论坛

Ios 亚马逊S3论坛,ios,amazon-web-services,http-post,afnetworking,Ios,Amazon Web Services,Http Post,Afnetworking,我正在拼命地从iPhone的图片库上传一张图片到AmazonS3。我在这里尝试了解决方案: 但是没有用。从那时起,我将我的代码改编为以下内容: AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:[uploadResult objectForKey:@"url"]]]; NSMutableURLRequest *request = [httpClient multipartF

我正在拼命地从iPhone的图片库上传一张图片到AmazonS3。我在这里尝试了解决方案:

但是没有用。从那时起,我将我的代码改编为以下内容:

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:[uploadResult objectForKey:@"url"]]];
NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST"
                                                                     path:nil
                                                               parameters:nil // amazonDictionary
                                                constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
                                                    /*
                                                    [formData appendPartWithFileData:UIImageJPEGRepresentation(selectedImageView.image, .9) // (selectedImageView.image)
                                                                                name:@"file" // N.B.! To post to S3 name should be "file", not real file name
                                                                            fileName:@"filename.jpg"
                                                                            mimeType:@"image/jpeg"];
                                                     */


                                                    [formData appendPartWithFormData:[[uploadResult objectForKey:@"s3Key"] dataUsingEncoding:NSUTF8StringEncoding] name:@"AWSAccessKeyId"];
                                                    [formData appendPartWithFormData:[[uploadResult objectForKey:@"s3PolicyBase64"] dataUsingEncoding:NSUTF8StringEncoding] name:@"Policy"];
                                                    [formData appendPartWithFormData:[[uploadResult objectForKey:@"s3Signature"] dataUsingEncoding:NSUTF8StringEncoding] name:@"Signature"];
                                                    [formData appendPartWithFormData:[@"image.jpg" dataUsingEncoding:NSUTF8StringEncoding] name:@"key"];
                                                    [formData appendPartWithFormData:[@"image/jpeg" dataUsingEncoding:NSUTF8StringEncoding] name:@"Content-Type"];
                                                    [formData appendPartWithFormData:[@"public-read" dataUsingEncoding:NSUTF8StringEncoding] name:@"acl"];
                                                    [formData appendPartWithFormData:UIImageJPEGRepresentation(selectedImageView.image, .9) name:@"file"];


                                                }];
解析XML时,我收到错误“无效策略:无效JSON”

听起来您正在尝试使用AFJSON处理程序,而不是您自己的XML处理程序。如果响应是XML,则不能使用AFNetworking的内置JSON解析器,必须自己解析返回的NSData

更新


您是否尝试过使用HTTPScoop之类的工具来检查发布的json?也许它实际上是格式不正确的,并不像Amazon所期望的那样。

当我处理来自S3的响应时,我使用AFXMLRequestOperation如下:AFXMLRequestOperation*operation=[AFXMLRequestOperation XMLParserRequestOperationWithRequest:request success:^(NSURLRequest*request,NSHTTPURResponse*response,NSXMLParser*XMLParser){NSLog(@“XML Successed”);}失败:^(NSURLRequest*请求,NSHTTPURLResponse*响应,NSError*错误,NSXMLParser*XMLParser){NSLog(@“XML失败,错误:%@”,错误);}];抱歉,我的评论是epic失败。我是新的。S3用XML传递这些错误,这就是我使用XML解析的原因。“无效策略:无效JSON”不是AFNetworking错误,而是S3错误。我认为OP没有使用AFNetworking JSON处理程序。
var fd = new FormData();
fd.append("AWSAccessKeyId", data.s3Key);
fd.append("Policy", data.s3PolicyBase64);
fd.append("Signature", data.s3Signature);
fd.append("key", file.name);
fd.append("acl", "public-read");
fd.append("Content-Type", file.type);
fd.append("file", file);

$http({
    method: 'POST',
    url: data.url,
    data: fd,
    transformRequest: angular.identity,
    headers: {'Content-Type': undefined}
})