今天遇到了图片Base64编码上传问题
在对Base64编码后的图片,进行JSON之后还要进行一次编码
代码如下
NSData *data = UIImageJPEGRepresentation(image, 0.5);
NSString *image64 = [database64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
NSLog(@"image64:%@",image64);
NSMutableDictionary *busiParam = [NSMutableDictionarydictionary];
[busiParam setObject:image64 forKey:@"images_content"];
NSString *busiJson = nil;
if ([NSJSONSerializationisValidJSONObject:busiParam]) {
NSError *error;
NSData *userData = [NSJSONSerializationdataWithJSONObject:busiParam options:kNilOptions error:&error];
busiJson = [[NSStringalloc] initWithData:userDataencoding:NSUTF8StringEncoding];
}
//编码过程
static NSString *const kAFCharactersGeneralDelimitersToEncode =@":#[]@"; // does not include "?" or "/" due to RFC 3986 - Section 3.4
static NSString *const kAFCharactersSubDelimitersToEncode = @"!$&'()*+,;=";
NSMutableCharacterSet * allowedCharacterSet = [[NSCharacterSetURLQueryAllowedCharacterSet] mutableCopy];
[allowedCharacterSet removeCharactersInString:[kAFCharactersGeneralDelimitersToEncodestringByAppendingString:kAFCharactersSubDelimitersToEncode]];
busiJson = [busiJson stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacterSet];
NSString *postStr = [NSStringstringWithFormat:@"busiParam=%@",busiJson];
NSLog(@"postStr:%@",postStr);
NSData *postData = [postStrdataUsingEncoding:NSUTF8StringEncoding];