gpt4 book ai didi

ios - AFNetworking POST 到 Amazon S3

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:32 26 4
gpt4 key购买 nike

我拼命尝试从 iPhone 的图片库将图片上传到 Amazon S3。我在这里尝试了解决方案:

Amazon S3 POST upload in iOS

但无济于事。从那时起,我将我的代码调整为以下内容:

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"];


}];

为清楚起见,我提供给初始化 AFHTTPClient 的基本 URL 是表单的 URL

"http://"+ bucket + ".s3.amazonaws.com"

目前,我收到错误消息“无效策略:无效 JSON”。当我解析 S3 提供的 XML 时。非常感谢帮助解决此问题。

我应该指出,我在 webapp 上有以下代码,它确实适用于上传图片:

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}
})

最佳答案

I am receiving the error "Invalid Policy: Invalid JSON." when I parse the XML

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

更新

您是否尝试过使用 HTTPScoop 之类的工具检查输出的 POST json?也许它实际上是畸形的,而不是亚马逊预期的那样。

关于ios - AFNetworking POST 到 Amazon S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20805705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com