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

     

    一波三折啊。呵呵

  • 相关阅读:
    MySQL
    MySQL -数据库备份
    MySQL
    MySQL
    MySQL
    MySQL
    MySQL
    MySQL
    MySQL
    53端口反弹shell
  • 原文地址:https://www.cnblogs.com/symen/p/5015569.html
Copyright © 2011-2022 走看看