Javascript Gmail API附件Base64url解码

Javascript Gmail API附件Base64url解码,javascript,node.js,gmail,base64,gmail-api,Javascript,Node.js,Gmail,Base64,Gmail Api,我目前正在尝试存储所有附加的gmail电子邮件,它们都用base64url()编码 但是,当我将消息存储在文件或S3中,并尝试读取它(使用良好的格式)时,我看不到任何内容,而gimp的图像编辑器则表示图像已损坏。 我做错了什么?我真的很迷茫,我如何才能解码base64url格式的google附件?我还从gmail获得了附件并成功保存了它们:设置base-64 in Blob对象,然后您可以使用library轻松地将文件保存到您的计算机中 代码: var base64=(response.data

我目前正在尝试存储所有附加的gmail电子邮件,它们都用base64url()编码

但是,当我将消息存储在文件或S3中,并尝试读取它(使用良好的格式)时,我看不到任何内容,而gimp的图像编辑器则表示图像已损坏。
我做错了什么?我真的很迷茫,我如何才能解码base64url格式的google附件?

我还从gmail获得了附件并成功保存了它们:设置base-64 in Blob对象,然后您可以使用library轻松地将文件保存到您的计算机中

代码:

var base64=(response.data).replace(/g,“/”)//替换此字符
base64=base64。替换(/-/g,“+”);
var base64Fixed=fixBase64(base64);
var blob=new blob([base64Fixed],{type:“image/png”})//设置你的文件类型!
saveAs(blob,文件名)//使用FileSaver库
函数fixBase64(二进制数据){
var base64str=binaryData//base64来自服务器响应的字符串
var binary=atob(base64str.replace(//\s/g');//解码base64字符串,删除空间以实现IE兼容性
var len=binary.length;//获取二进制长度
var buffer=new ArrayBuffer(len);//使用二进制长度创建ArrayBuffer
var view=newuint8array(buffer);//创建8位数组
//将二进制数据的unicode保存到8位数组中
对于(变量i=0;i

希望它能帮助你。祝你好运

我也从gmail获得了附件并成功保存了它们:设置base-64 in Blob对象,然后你就可以使用library轻松地将文件保存到你的计算机中

代码:

var base64=(response.data).replace(/g,“/”)//替换此字符
base64=base64。替换(/-/g,“+”);
var base64Fixed=fixBase64(base64);
var blob=new blob([base64Fixed],{type:“image/png”})//设置你的文件类型!
saveAs(blob,文件名)//使用FileSaver库
函数fixBase64(二进制数据){
var base64str=binaryData//base64来自服务器响应的字符串
var binary=atob(base64str.replace(//\s/g');//解码base64字符串,删除空间以实现IE兼容性
var len=binary.length;//获取二进制长度
var buffer=new ArrayBuffer(len);//使用二进制长度创建ArrayBuffer
var view=newuint8array(buffer);//创建8位数组
//将二进制数据的unicode保存到8位数组中
对于(变量i=0;i

希望它能帮助你。祝您好运

参考@OriEng的解决方案并使用js-base64,这是一个简单的解决方案

# npm i js-base64
const Base64 = require('js-base64')
function decodeBase64(str) {
  str = str.replace(/_/g, '/').replace(/-/g, '+') // important line
  return Base64.atob(str)
}

参考@OriEng的解决方案并使用js-base64是一个简单的解决方案

# npm i js-base64
const Base64 = require('js-base64')
function decodeBase64(str) {
  str = str.replace(/_/g, '/').replace(/-/g, '+') // important line
  return Base64.atob(str)
}

谢谢你的帮助!这对我帮助很大,现在我的代码正常工作,文件正确发送到S3Thank you@OriEng。这帮了大忙。这是谷歌唯一有效的解决方案。我在从Gmail API下载附件并用NodeJS将其保存为文件时遇到了问题,这对我很有帮助。我需要解决的一件事是,atob在NodeJS中不可用,我是从“js-base64”获得的。谢谢您的帮助!这对我帮助很大,现在我的代码正常工作,文件正确发送到S3Thank you@OriEng。这帮了大忙。这是谷歌唯一有效的解决方案。我在从Gmail API下载附件并用NodeJS将其保存为文件时遇到了问题,这对我很有帮助。我需要解决的一件事是,atob在NodeJS中不可用,我是从“js-base64”获得的。谢谢。这真的需要出现在Gmail API文档的某个地方。谢谢。这确实需要出现在Gmail API文档的某个地方。
# npm i js-base64
const Base64 = require('js-base64')
function decodeBase64(str) {
  str = str.replace(/_/g, '/').replace(/-/g, '+') // important line
  return Base64.atob(str)
}