解码Gmail API下载的附件数据

时间:2018-05-24 07:05:24

标签: gmail base64 gmail-api decoding google-api-objc-client

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

Google Developer

Cocoa Docs

我得到的答案如下所示。

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

我想解码数据以保存在我的应用本地,稍后我会显示。

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

1 个答案:

答案 0 :(得分:1)

(几分钟前!)我已经成功地解码了在Swift中检索到的附件数据(很抱歉,我无法对Objective-c进行编码),所以这里是步骤:

1)计算“数据”中的字符数。 Base64编码的字符串必须具有4的倍数的字符数。如果不是这种情况,则需要在字符串的末尾添加尽可能多的“ =”字符,以达到下一个4的倍数。 (我相信Google无需打补丁就可以发送数据,但您永远不会知道...)

2)正如我在此SO链接(iOS - download attachment from Gmail using messageId and attachmentId)中发现的那样,Google为HTTP传输替换了一些字符,因此您需要替换:

  • “-”(减号)乘以“ +”(加号)

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

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

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

我希望它对您有用。