解码 Gmail API 下载的附件数据

7 gmail base64 decoding google-api-objc-client gmail-api

我可以通过传递userId、nessageID和attachmentID来获取附件(参考:

谷歌开发者

可可文档

我收到如下回复。

{ "data": "JVBERi0xLjYKJeTjz9IKMSAwIG9iagpbL1BERi9JbWFnZUIvSW1hZ2VDL0l...." "size": 629163 }

我想解码数据以保存在我的本地应用程序中,稍后我将显示 .

我可以成功下载并保存在本地(文档文件夹)但看不到附件中的内容,请完善我。

小智 2

我刚刚成功(几分钟前!)在 Swift 中解码检索到的附件数据(抱歉我无法编写 Objective-C 代码),因此步骤如下:

1)计算“data”中的字符数。Base64 编码的字符串必须具有 4 的倍数的字符数。如果不是这种情况,则需要在字符串末尾填充尽可能多的“=”字符,以达到下一个 4 的倍数。 (我相信谷歌已经发送了不需要修补的数据,但你永远不知道......)

2)正如我在此SO链接中发现的(iOS - 使用messageId和attachmentId从Gmail下载附件),Google替换了HTTP传输的一些字符,因此您需要替换:

  • “-”(减号字符)乘“+”(加号字符)

  • “_”(下划线字符)乘“/”(斜杠字符)

3)然后使用此 Swift Data init 方法将“准备好的”Base64 字符串转换为 Data : Data(base64: YourBase64String , options: .ignoreUnknownCharacters )

然后您可以将转换后的数据保存到具有正确扩展名的文件中。我已成功检索 jpeg 和 pdf 格式的附件。

我希望这个对你有用。