解密Gmail API下载的附件数据

7
我可以通过传递userId、messageID和attachmentID来获取附件(参考:Google DeveloperCocoa Docs)。我得到的响应如下所示: { "data": "JVBERi0xLjYKJeTjz9IKMSAwIG9iagpbL1BERi9JbWFnZUIvSW1hZ2VDL0l...." "size": 629163 } 我想解码数据并保存在我的应用程序本地,以后会显示。我已经成功下载并保存在本地(文档文件夹),但无法查看附件内容,请帮我完善。

你尝试过将其编码为'UTF-8',然后使用base64解码吗? - Mr.Rebot
1个回答

2

我刚刚成功(几分钟前!)用Swift解码了附件数据(很抱歉我不会编写Objective-C),以下是步骤:

1)计算“数据”中的字符数。Base64编码的字符串必须具有字符数,其是4的倍数。如果不是这种情况,则需要使用“=”字符填充字符串的末尾,直到达到下一个4的倍数为止。(我相信谷歌发送的数据不需要修补,但你永远不知道...)

2)正如我在这个SO链接中发现的(iOS - download attachment from Gmail using messageId and attachmentId),谷歌替换了一些字符进行HTTP传输,所以你需要替换:

  • “-”(减号字符)用“+”(加号字符)代替

  • “_”(下划线字符)用“/”(斜杠字符)代替

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

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

希望这对你有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接