zoukankan      html  css  js  c++  java
  • ios base64图片上传失败问题

    今天做图片上传,后台用的是base64解密图片二进制文件,以前都是用表单上传来解决图片上传的,现在后台没有人改,所以研究下base64上传。

    需要将图片base64加密,但是调用

    [data base64Encoding];
    

    后得到的字符串上传到后台图片有问题,就是一张灰色图片。然后谷歌了下,发现这种方法得到的字符串里面含有一些特殊字符如“=,”什么的在post到后台后就会变成空格,所以图片会有问题。找到一个方法需要将这些特殊的字符进行UTF8编码:

    NSString* newImgStr = (__bridge NSString *) CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                          (CFStringRef)theImgStr,
                          NULL,
                          CFSTR(":/?#[]@!$&’()*+,;="),
                          kCFStringEncodingUTF8);
    

    这样保存在内存中,发送的时候再转换为nsdata,同样要使用utf-8编码:

    NSData *jsonData = [[self getDictStringFromDict:param] dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:jsonData];
    

    但是改掉后发现post url到后台后台会报错,

    Exception occurred during processing request: null

    感觉可能是图片文件太大导致,所以将

    UIImagePNGRepresentation改为

    UIImageJPEGRepresentation并设置压缩比例为0.2。OK!,没有错误了,图片上传成功。

     

    一波三折啊。呵呵

  • 相关阅读:
    我所理解的NAT
    H3C防火墙安全策略故障排查思路
    职场建议
    小型企业典型网络内部拓扑
    echo&printf
    笔挺站立 昂首挺胸
    Jordan Peterson 的建议
    刚才思考的两个问题
    高手的见解
    一个企业网络管理人员的注意事项
  • 原文地址:https://www.cnblogs.com/symen/p/5015569.html
Copyright © 2011-2022 走看看