我正在使用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回复错误,说“您提供的标题意味着未实现的功能”
更新:要解决此问题,我只需评论替换原始内容标题的行。