前端加密文件url传输 :
base + encodeURIComponent(Base64.encodeURI(file.url))
后端解密报错:
byte[] s = Base64.getDecoder().decode(source.replace("\r\n", ""));
String s1 = new String(s, StandardCharsets.UTF_8);
System.out.println(s1);
java.lang.IllegalArgumentException: Illegal base64 character 2d
at java.util.Base64$Decoder.decode0(Base64.java:714)
at java.util.Base64$Decoder.decode(Base64.java:526)
at java.util.Base64$Decoder.decode(Base64.java:549)
at com.test.tetststs(test.java:333)
报错为 Base64.getDecoder() 这一步操作
解决方法:将 getDecoder 修改为 getUrlDecoder
byte[] s = Base64.getUrlDecoder().decode(source.replace("\r\n", ""));
String s1 = new String(s, StandardCharsets.UTF_8);
System.out.println(s1);
http://localhost:8080/cms/sys/common/static/temp/ACN111221655中文测试_1681781289527.pdf
成功
原因:
前端加密使用了 getUrlEncoder 后端要使用与之对应的解密方法,getMimeEncoder,getDecoder 同理.