Android发送POST请求上传图片后台解析本地一片黑问题

POST请求字符’+’被自动替换’ ‘空格字符问题

问题描述

  • 前台安卓开发,后台C++开发(IDE:C++Builder)
  • 开发环境:Windows
  • 前台使用JSON,通过POST请求向后台发送图片数据:
    此图片数据通过Base64编码后打包成JSON数据格式,POST请求发给后台
  • 症状:
    后台收到前台Base64编码的图片数据大小正常,和前台发送的一致;
    Base64解码后写图片文件数据到本地,得到的图片一片黑;如下图:
    Android发送POST请求上传图片后台解析本地一片黑问题_第1张图片

    刚开始博主确实以为自己后台这边解码数据,写本地图片文件有问题;博主用的是Base64第三方库;由于没有单独拿出来测试看,所有确实有点心慌。
    后来经单独测试,确实没问题;然后将测试的代码集成到项目中;结果还是写图片文件出现一片黑。因此怀疑是前台那边传过来的数据有问题;让前台自己测下自己编码和解码的数据是否正常。

问题原因:

1.附上URL链接,有可能是前台Base64编码的时候,标志位传参模式问题:
https://jingyan.baidu.com/article/1974b2898278b6f4b1f774fc.html?qq-pf-to=pcqq.c2c

2.urlencode 空格变 +号,urldecode +号变空格,HTTP的POST协议传递数据时自动url编码,接收后自动解码+号解码成空格了。

解决方法:

前台切实有Base64编码传参问题;改了之后图片还是一片黑;最好博主后台直接将前台传过来的Base64编码数据写到TXT文本中;放到图片在线转码Base64中查看,发现是无效的图片。说明传过来编码数据本身是有问题的。最后通过TXT数据和前台数据对比分析,才发现是’+’被转换成了’空格’。通过百度HTTP的POST;发现url的编码和解码会出现字符’+’和空格字符的转化问题。

最后博主将传过来的数据中的所有空格字符都替换成’+’号字符;问题解决;写本地图片文件显示正常。

你可能感兴趣的:(C/C++后台开发问题)