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!,没有错误了,图片上传成功。

     

    一波三折啊。呵呵

  • 相关阅读:
    UOJ222 【NOI2016】区间
    BZOJ3631 [JLOI2014]松鼠的新家
    BZOJ 1001 [BeiJing2006]狼抓兔子
    poj2488 A Knight's Journey裸dfs
    hdu 4289 网络流拆点,类似最小割(可做模板)邻接矩阵实现
    hdu 4183 EK最大流算法
    HDU 4180 扩展欧几里得
    HDU 4178 模拟
    HDU 4177 模拟时间问题
    hdu 4185 二分图最大匹配
  • 原文地址:https://www.cnblogs.com/symen/p/5015569.html
Copyright © 2011-2022 走看看