首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gmail API获取解码附件文件大小。

使用gmail API获取解码附件文件大小。
EN

Stack Overflow用户
提问于 2015-08-03 21:42:35
回答 1查看 932关注 0票数 5

我正在使用谷歌的php客户端库与gmail对话。

我试图使用此API报告附件的文件大小。

为了测试这个,我给自己发了一封附有附件的电子邮件。我知道这个附件的大小是511 be。gmail web ui将此附件报告为499 is,我认为它足够接近:

然而,当我使用gmail json api获取这个映像时,我确实获得了正确的附件大小:

代码语言:javascript
复制
GET https://www.googleapis.com/gmail/v1/users/me/messages/14ef5015d08312fd/attachments/ANGjdJ-Yy2H2avT5aFV7akMM2Lp4NigSpHqKgMT48zUMPVe3l6B9U0cfs-jXYD3cWJPhEwVjXQxNg2ZGDBFXKpMnf1HbpoBCwzcuOYSAJmHBbMHGANWKynofHf5GyStvjHhvNpA5xwla2hj7zdm6SVISoMgAR-dHJIPXbRniHVdryv13bxNsUeuRFvYbktnAcIwi-ppD6C1VAJtnGQYIKtNjsOa68hOlMSGLByWOrbB2txEN_P4cM43U7SEEzFmIDjFhKGkEIiU1rvrf9WT8KFVTsJ1U9_nTFjfkXIjl_Q?key={YOUR_API_KEY}

返回

代码语言:javascript
复制
{
 "size": 510808,
 "data": "encoded_data_string_uiasd82187"
}

因此,gmail显示的内容与附件的实际大小之间略有脱节。但奇怪的是:

当我请求整条讯息 (不仅仅是附件)时,这样的请求如下:

代码语言:javascript
复制
GET https://www.googleapis.com/gmail/v1/users/me/messages/14ef5015d08312fd?key={YOUR_API_KEY}

我得到了这样的回应:

代码语言:javascript
复制
"body": {
     "attachmentId": "ANGjdJ9P-2Q_1lMch1_smv_ZKACDE_QRtBisZ8bAWP1x_-ze8tvQiQunNCjcWUDkv2kjZo67AETe6Zmti5YZ3Zl4-EyaNtbtfxWOHBhTqQFSK673hZhEWW8Bg7Ul4ws2eOSYXrZsvWY8NhLptXJP5PM0W30LZk2sHj4XLWlmU64YxMPAOXwLOT1FeNc3EgVvlKJFQv1sUVajmA6c1K_qKgH_Y_c56fSJAz9aFRoh9RW6wvkhTV5NeLm9WFghkzpInwz6cm-DyJQhY-eOZLE2mvqQ4EmCPmBgzwNDh29mqQ",
     "size": 699004
    }

因此,我正在寻找的ID附件的大小似乎是699 of,而不是真正的511 of大小。这似乎是编码附件的大小,而不是原始文件。

因此,使用attachment库,当我有一个Google_Service_Gmail_MessagePart表示这个附件,并调用$messagepart->getBody()->getSize()时,它返回699004。

我需要的是附件的真实大小,510808。

我如何才能得到这个真正的大小,而且gmail中是否有错误在这个上下文中显示错误的大小?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-03 21:53:28

恐怕这是base64 64编码的缺点。

粗略地说,Base64 64编码的二进制数据的最终大小等于原始数据大小+ 814字节(用于标头)的1.37倍。解码数据的大小可以用以下公式近似: 字节= (string_length(encoded_string) - 814) / 1.37 维基百科

这非常适合您的示例(511 * 1.37≈700)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31797220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档