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

     

    一波三折啊。呵呵

  • 相关阅读:
    Springboot Endpoint之二:Endpoint源码剖析
    Linux进程被杀掉(OOM killer),查看系统日志
    docker常用命令详解
    micrometer自定义metrics
    使有prometheus监控redis,mongodb,nginx,mysql,jmx
    Grafana+Prometheus打造springboot监控平台
    Grafana介绍
    Prometheus介绍
    Groovy与Java集成常见的坑
    ES之1:基本概念及原理
  • 原文地址:https://www.cnblogs.com/symen/p/5015569.html
Copyright © 2011-2022 走看看