iOS post请求图片Base64编码上传

来源:互联网 发布:软件企业认证时间 编辑:程序博客网 时间:2024/04/30 15:26

今天遇到了图片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:busiParamoptions:kNilOptionserror:&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];




如有问题欢迎来跟我交流 -- LC



1 0
原创粉丝点击