posts - 44,comments - 6,views - 85373

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

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

1
[data base64Encoding];

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

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

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

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

 

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

Exception occurred during processing request: null

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

UIImagePNGRepresentation改为

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

 

一波三折啊。呵呵

posted on   小丑鱼2012  阅读(742)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
阅读排行:
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略
历史上的今天:
2014-12-03 iOS百度地图探索
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示