【问题标题】:Decoding Gmail API downloaded attachment data解码 Gmail API 下载的附件数据
【发布时间】:2018-11-03 07:24:57
【问题描述】:

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

Google Developer

Cocoa Docs

我收到如下回复。

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

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

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

【问题讨论】:

  • 您是否尝试过将其编码为“UTF-8”,然后使用 base64 对其进行解码?

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


【解决方案1】:

我刚刚成功(几分钟前!)在 Swift 中解码检索到的附件数据(对不起,我无法编写 Objective-c 代码)所以这里是步骤:

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

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

  • “-”(减号)由“+”(加号)

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

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

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

我希望它对你有用。

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 1970-01-01
    • 2014-11-08
    • 2016-11-23
    • 2016-03-28
    • 2022-11-11
    • 2016-11-21
    • 2018-12-15
    • 2014-10-01
    相关资源
    最近更新 更多