AFNetworking将文件上传到s3,相当于ASIHTTPRequest setData

时间:2012-07-22 13:08:39

标签: objective-c amazon-s3 asihttprequest afnetworking

我正在使用s3 Signing and Authentication来生成与移动客户端配合使用的单一内容。

我的原始类正在使用ASIHTTPRequest,但我想将其转换为AFNetworking。

通过使用ASIHTTPRequest将文件上传到s3,可以很容易地设置一些特定于s3的标题并将图像包含为请求

 [request setData:data withFileName:filename andContentType:"image/jpeg" forKey:key];

从其他建议开始,我使用以下代码发送带有请求的图像

 NSURLRequest *request = [httpClient multipartFormRequestWithMethod:@"PUT" path:@"/johnsmith/photos/puppy.jpg" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
        [formData appendPartWithFileData:imageData name:@"file" fileName:@"puppy.jpg" mimeType:@"image/jpeg"];
    }];

但是此请求将“Content-Type:image / jpeg”替换为

  

内容类型:多部分/格式的数据;边界=边界+ 0xAbCdEfGbOuNdArY

它与签名邮件不匹配,因此上传文件无效。

进一步谷歌搜索后,我找到了一个输入流方法

NSData *imageData = UIImageJPEGRepresentation(uploadImage, 0.5f);
NSInputStream *stream = [[NSInputStream alloc]initWithData:imageData];
operation.inputStream = stream;

此时,AFNetworking会生成

Transfer-Encoding:Chunked

和s3回复错误,说“您提供的标题意味着未实现的功能”

更新:要解决此问题,我只需评论替换原始内容标题的行。

0 个答案:

没有答案