正确的方式embeddedjson有效载荷base64与networking

提前感谢任何帮助。 我正在使用只需要json有效负载的Web服务,并且此服务已设置为提交照片。

所以我想弄清楚在json有效载荷中embedded图像的正确方法。 这是我的方法。

//convert image to nsdata NSData *originalPhoto = UIImageJPEGRepresentation(self.photo.image,.9); //convert the data to a base64 string using NSData+Base64 category extension (Matt Gallagher version) NSString *base64photoString = [originalPhoto base64EncodedString]; //set the string in a NSDictionary [info setValue:base64photoString forKey:@"data"]; //then pass it to AFNetworking using the httpClient 

一切似乎工作,我得到json有效载荷。 注意:bas64string在post正文中结束。

是否有人知道如果一个URI需要被embedded到数据的前面 – 如下所示:“file”:“data:image / jpg; base64,[base64 string]” – 我试过但没有得到任何爱从Web服务,但我可能有语法错误。

但是Web服务并不喜欢它。

为了validation编码,我把生成的string从nslog中剪下来,并粘贴到一个在线解码器网站中,并重新创build原始图像 – 看起来数据编码正确。

在我可以和Web服务器pipe理员聊天前两天,所以我只是在寻找validation这是一个正确的方法,或者请指出任何缺陷。 我无法将服务更改为多部分编码forms,我坚持使用这种方法。

再次感谢

得出这个想法,并认为我会把答案,以防其他人有类似的问题。

场景 – 发布一个JSON有效载荷,并将照片embedded为base64string。

我在https://github.com/l4u/NSData-Base64.gitfind了一个base64分叉版本。 在其中包含了Matt Gallagher在2009年发布的大部分原作中的一个额外的方法:base64EncodedStringWithSeparateLines:YES – 这个技巧。

 //use it like this: NSData *originalPhoto = UIImageJPEGRepresentation(self.photo.image,1); NSString *base64PhotoString = [originalPhoto base64EncodedStringWithSeparateLines:YES]; //stuff it in a dictionary like this: NSMutableDictionary *info = [NSMutableDictionary dictionary]; [info setValue:base64PhotoString forKey:@"sFileData"]; //send it using AFNetworking like this: [[ClientInterface sharedInstance] postPath:submitPhoto parameters:info success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"success!"); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error:%@",error); }];