首页 > 解决方案 > 在 WSO2 EI 6.3.0 中将 Base64 URL 转换为 Base64 编码格式

问题描述

我从返回base64url 编码字符串的Gmail API获取电子邮件附件(图片) 。但实际编码与此 gmail api 不同(“/”替换为“_”,“+”替换为“-”等)。我想获取原始的 base64 编码字符串而不是 base64 url​​ 编码格式。我应该从 gmail api 响应中替换这两个符号(“/”、“+”)还是有人可以帮我实现这个吗?我正在尝试使用 WSO2 EI 6.3.0。

 <call>
                    <endpoint>
                        <http method="get" uri-template="{+uri.var.gmail.apiUrl}/{+uri.var.gmail.apiVersion}/users/{+uri.var.gmail.userId}/messages/{+uri.var.id}/attachments/{+uri.var.attachmentId}"/>
                    </endpoint>
                </call>
 <property description="emailAttachment" expression="//data/text()" name="emailAttachment" scope="default" type="STRING"/>

例如,

来自 Gmail API: 调用后,它在“data”键中返回以下值。

_9j_4AAQSkZJRgABAQAASABIAAD_4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAAAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAPwKADAAQAAAABAAAL0AAAAAD_....

原始 Base64 编码值:

/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAgESAAMAAAABAAEAAIdpAAQAAAABAAAAJgAAAAAAAqACAAQAAAABAAAPwKADAAQAAAABAAAL0AAAAAD/....

标签: base64gmail-apibase64url

解决方案


在 Javascript 中,最简单的方法是使用replace()方法:

newData=data.replace(/-/g, '+').replace(/_/g, '/')


推荐阅读