由于ASIHTTPRequest已被放弃,我将ios / osx项目移至使用AFNetworking 2.0。我为AFHTTPRequestOperationManager编写了一个类别,它添加了一个创建Amazon S3 PUT请求的方法。它处理所有的签名等。这是很好的工作。但是,我遇到了上传图片的问题。文件已成功上载到S3,但未被识别为有效图像(jpg)文件。他们在photoshop中打开很好(它一定是宽容的)但没有别的。一些挖掘文件(运行cat)显示结束边界正被编码到文件
中 --Boundary+0xAbCdEfGbOuNdArY--
我已经仔细检查了HTTP头文件,它们看起来是正确的:
"Accept-Language" = "en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5";
Authorization = "AWS REDACTED";
"Content-Length" = 228941;
"Content-Type" = "multipart/form-data; boundary=Boundary+0xAbCdEfGbOuNdArY";
Date = "Wed, 30 Oct 2013 18:57:39 +0000";
我正在使用以下方式构建请求:
NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"PUT" URLString:url.absoluteString parameters:parameters constructingBodyWithBlock:block];
构造块看起来像:
__weak UploadPhotoAFS3Op *weakSelf = self;
self.constructingBodyBlock = ^(id<AFMultipartFormData> formData) {
UploadPhotoAFS3Op *strongSelf = weakSelf;
if (strongSelf) {
[formData appendPartWithFileData:resizedPhotoData name:@"image" fileName:strongSelf->_photoToUpload.uuidFileName mimeType:@"image/jpeg"];
}
};
我确信resizedPhotoData有效 - 这与生成的当前基于ASIHTTPRequest的操作的生成方式相同。这个问题与标题有关(特别是边界) - 我不知所措。