Android 图片转Base64字符串

图片转Base64字符串通过参数的形式传递至服务器端实现图片上传功能也不算新鲜事了。然后,在开发过程中还是有些坑需要注意的。

 

以下就是为代码模块:

 

String imgContent = Base64.encodeToString(bytes, Base64.DEFAULT);


貌似就这么简单,传递一个byte [ ] 类型的数组(至于如何将图片转化为byte [ ] 类型的数组,此处不讲解 ),后面的参数使用默认的就可以(默认的int值为0)。

 

然后,就将imgContent作为传递服务器的参数进行上传即可。

 

于是,问题就来了,服务器返回:

The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters. 

 

大概意思就是:转化后的字符串含有不合法的字符。细想一下,其实不应该啊,数据源没有做任何处理,直接转化的Base64字符串,不应该包含非法的字符。(此处也无从着手)。然后把通过日志把转化后的字符串打出来看了下:

 

iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAABJxJREFUeJztm+194jgQxp+5330/SvBWsGwF8dDAkgpiKjiug6SCkApCKlhogCEVbFJBnA5IBXMfJO8pnF9GduyYO/6fwMjWaCRLo0cDcObM/xr6bANEJAFwC2AC4IaZ90PW39oBu93uOxHNASRwxh8A5Kq6mc1mW+tzREQApP7rAcA3Zs7b2hXL77E3iMgUwD2AadnvRJSJSA7gL2beGB6ZBp8ncA7NY+1qy28xhUUkA/ATFY0PSAD88OWbuCs+qOrzaF8B3/M/W9SxYOZ1w7PncL2/YeZDizpaE+OAF7iejeUA4MvQDbNiegX8UE5a1jEBkLW8t3esk+C8Yz1XAFYdn1GJfz0vVDWPWYEAuwO+xpv1jqZJszUicgtgCQBEBBF5AsDWV866CiTtzOsXEUnhGx8wBXBtfYbJAar6ZrZqWNKyi6pqHnHWEfBkfWAZqvra5f4a8rKLRGRecUwOICJLRNfb/TVsKpxrnnCtI2Dd8TXoZQVg5gMRpQC2qvqqqo/usj2ajAmElnC7tljumPl4ohoNUbtBEVnDrelWtszcNYbolajNEDNnAG6Mxe/G3nigpR7gRYxrVZ0T0R/FdVV98xPeipk7rRxD0VkREpEJXPDxNNYNz5kaakeAH+pX+CcUzgE8Di1a9EmpA3zD71ERasJFhotTec/r+JcD/NZS4PbxdRzgdL91D3Z9GMVWGcBEVfez2ewx/J2OCk8AvKC58QUHuMhrlCMh3CoH7AFcFhP2cRywgr3x8GXbRIe94yPXsgg0hXu9AQQO8L3/vUVdqZ8zxsafNb/NC5vDETBFXO+HpC3v65PE8nvogLaNt1Q2WkIH/NeiuEpxVFXfiljmoxwwxlVgWaVhEFFWfP7lAGZ+aiNd+Ur2LQzsFWbOiSgB8ODFkje4UfEtPLM8jgMyBEuEkVELHk2URYIbGJdDVX2ezWa9af5DUCaIZAAemm5U1Uevx500lbtBEclUNSOii/C6qr4S0YqZezvqGpJGQSQQPAAgHzJ748wAtJLEfH5QOPltx7ojbCJWFp8C+IHy0HcPpw+clCNiDkbmcI2vY3B9QEQmqvrVr0g5nGSXW+83OSBSKMmZ+YvVgC74wK3IMQxZweUcNob31oOR65JKqkiM2WGd8ILHPcrtWqJ5tAKwO+Ciucg7ej0RCrJL60gtHWF1QFS4q6pdtAULVgfXqUIAIs8GR0RqLNfYcdYkqS0i9EIialwF/JJ6BWfkAW4ZfTAer32YeGMdAbEZHpXlRWQiIvdwWadLuN6cw83cL365bcK6zDamzJkcwMxrVX02VvrQcHR2i+rEyQlcjnHaUIc1Y6Vxw2aeA4goNThhi3ItHsCvtLbMUF2tKONTY+YNTriznGGaHRDk49wcS2f++4KZ5w3vcGasLvFzRJ09e98p7466vC2XVpWqdX6AX4sTRGyRd7vd/lhfqOHS+H+D0JZDbBge/YeJAt/ovO39BswzfRdbBo0DLMtjQN6XHSFDB0ImGU1Vo3Z0XRjUAb5Ri7oyPtEqG8QgfEIo7BMqFmVLmFeap0Pqjp/6v0EfF6TwofCpqUlnzpw5ff4GXvTVd/vTMGAAAAAASUVORK5CYII=

 

 

看起来很正常啊,不足的部分也用“=”号代替了。

然后把网络请求参数的部分数值打出来:

 

iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABHNCSVQICAgIfAhkiAAABJxJREFU\neJztm+194jgQxp+5330/SvBWsGwF8dDAkgpiKjiug6SCkApCKlhogCEVbFJBnA5IBXMfJO8pnF9G\nduyYO/6fwMjWaCRLo0cDcObM/xr6bANEJAFwC2AC4IaZ90PW39oBu93uOxHNASRwxh8A5Kq6mc1m\nW+tzREQApP7rAcA3Zs7b2hXL77E3iMgUwD2AadnvRJSJSA7gL2beGB6ZBp8ncA7NY+1qy28xhUUk\nA/ATFY0PSAD88OWbuCs+qOrzaF8B3/M/W9SxYOZ1w7PncL2/YeZDizpaE+OAF7iejeUA4MvQDbNi\negX8UE5a1jEBkLW8t3esk+C8Yz1XAFYdn1GJfz0vVDWPWYEAuwO+xpv1jqZJszUicgtgCQBEBBF5\nAsDWV866CiTtzOsXEUnhGx8wBXBtfYbJAar6ZrZqWNKyi6pqHnHWEfBkfWAZqvra5f4a8rKLRGRe\ncUwOICJLRNfb/TVsKpxrnnCtI2Dd8TXoZQVg5gMRpQC2qvqqqo/usj2ajAmElnC7tljumPl4ohoN\nUbtBEVnDrelWtszcNYbolajNEDNnAG6Mxe/G3nigpR7gRYxrVZ0T0R/FdVV98xPeipk7rRxD0VkR\nEpEJXPDxNNYNz5kaakeAH+pX+CcUzgE8Di1a9EmpA3zD71ERasJFhotTec/r+JcD/NZS4PbxdRzg\ndL91D3Z9GMVWGcBEVfez2ewx/J2OCk8AvKC58QUHuMhrlCMh3CoH7AFcFhP2cRywgr3x8GXbRIe9\n4yPXsgg0hXu9AQQO8L3/vUVdqZ8zxsafNb/NC5vDETBFXO+HpC3v65PE8nvogLaNt1Q2WkIH/Nei\nuEpxVFXfiljmoxwwxlVgWaVhEFFWfP7lAGZ+aiNd+Ur2LQzsFWbOiSgB8ODFkje4UfEtPLM8jgMy\nBEuEkVELHk2URYIbGJdDVX2ezWa9af5DUCaIZAAemm5U1Uevx500lbtBEclUNSOii/C6qr4S0YqZ\nezvqGpJGQSQQPAAgHzJ748wAtJLEfH5QOPltx7ojbCJWFp8C+IHy0HcPpw+clCNiDkbmcI2vY3B9\nQEQmqvrVr0g5nGSXW+83OSBSKMmZ+YvVgC74wK3IMQxZweUcNob31oOR65JKqkiM2WGd8ILHPcrt\nWqJ5tAKwO+Ciucg7ej0RCrJL60gtHWF1QFS4q6pdtAULVgfXqUIAIs8GR0RqLNfYcdYkqS0i9EIi\nalwF/JJ6BWfkAW4ZfTAer32YeGMdAbEZHpXlRWQiIvdwWadLuN6cw83cL365bcK6zDamzJkcwMxr\nVX02VvrQcHR2i+rEyQlcjnHaUIc1Y6Vxw2aeA4goNThhi3ItHsCvtLbMUF2tKONTY+YNTriznGGa\nHRDk49wcS2f++4KZ5w3vcGasLvFzRJ09e98p7466vC2XVpWqdX6AX4sTRGyRd7vd/lhfqOHS+H+D\n0JZDbBge/YeJAt/ovO39BswzfRdbBo0DLMtjQN6XHSFDB0ImGU1Vo3Z0XRjUAb5Ri7oyPtEqG8Qg\nfEIo7BMqFmVLmFeap0Pqjp/6v0EfF6TwofCpqUlnzpw5ff4GXvTVd/vTMGAAAAAASUVORK5CYII\u003d\n


貌似不一样,多加了"\n"和"\u003d",其他的部分倒是一样。所以在请求网络的时候,参数传递是不符合格式要求的(尽管有些图片是能正常上传,但是有些图片却是不能。)

 

 

接下来就好办了:通过Java的替换字符串方法把不合法的字符串给替换掉就可以了:"\n"——>"","\u003d"——>"="

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ganshenml

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值