base64回显图片报错:Failed to load resource: net::ERR_INVALID_URL
在客户端中生成的 + 符号,在Java中会变成空格,因此须要将 base64 编码后的字符串中的加号替换成 %2B 替换就好了,同理,如果 / 符号出现这样的情况也可以这样处理。
Base64 有三个字符+、/和=,在 URL 里面有特殊含义,所以要进行特殊处理。(这里未发现)
第一种方法:
js中:encodeURI(str).replace(/\+/g,'%2B') 或者
java中:str.replaceAll("\\+","%2B")
未处理:
已处理:
如果有其他特殊字符如空格,还需要另外处理,故推荐第二种方法,使用encodeURIComponent
第二种方法:
在js中,对url的加密分别由三种方式:
escape("aa+aa aa")
"aa+aa%20aa"
encodeURI("aa+aa aa")
"aa+aa%20aa"
+变成%2B
encodeURIComponent("aa+aa aa")
"aa%2Baa%20aa"
或者 java代码:
// 加号变成%2B,空格变成加号
System.out.println(URLEncoder.encode("aa+aa aa","UTF-8"));
aa%2Baa+aa