最近做一个导出execl的功能,由于表单提交统一使用的ajax的方法,又不想在现有的框架上面再进行添加,所以稍微取了个巧
就是当填写完条件之后,生成一个导出的连接,点击导出数据。
这之中 由于nginx进行的地址重写和封装传参的地址为这样的
http://127.0.0.6/data/io/download_pback/Y2lkXzEwMDAyJTQwMTAwMDQlMkNzdGFydF8yMDE4LTA1LTAxJTJDZW5kXzIwMTgtMDUtMDE/
但是由于参数的问题会变成这样
http://127.0.0.6/data/io/download_pback/Y2lkXzEwMDAyJTQwMTAwMDQlMkNzdGFydF8yMDE4LTA1LTAxJTJDZW5kXzIwMTgtMDUtMDE==/
带有这个==(或者其他符号)会导致找不到路径的问题 而这个等号有时候有 有时候没有 有时候一个 有时候两个,感觉很难处理,而如果再添加方法觉得还要麻烦(如再ajax成功时再生成一次表单请求 云云)
于是去网上查找了一下方法,有一个什么方法是补0的……但是太长不看
于是去官网看了一下base64_encode 和base64_decode
这一看……官网上面给出这么两个方法
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64url_decode($data) {
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
说是base64的变体编码(百度翻译的,不准确请谅解)
总之变不变体第一个替换就不谈了,但是他去掉了末尾的 “=”? 难道这个去掉解码也没问题这一想法就产生了
于是试了一下好像 还真是。
于是问题就解决了……