Microsoft Graph API附件处理

问题描述 投票:0回答:2

我似乎在从MS Graph API解码附件时遇到问题。至少,我认为这就是问题所在。下面是一个简单的JS样本。

        local.downloadAttachment = function (data) {
            $.get("https://graph.microsoft.com/v1.0/me/messages/" + self.EmailID() + "/attachments/" + data.id, null, function (results) {
                var bytes = new Uint8Array(results.contentBytes); // pass your byte response to this constructor
                var blob = new Blob([bytes], { type: results.contentType });// change resultByte to bytes

                //Alt method, also doesn't work but seems a lot closer to the right solution.
                //var altBytes = $.base64.decode(results.contentBytes);
                //var blob = new Blob([altBytes], { type: results.contentType });

                var link = document.createElement('a');
                link.href = window.URL.createObjectURL(blob);
                link.download = results.name;
                link.click();
            });
        };

我注意到几个奇怪的地方。 contentType似乎是错误的,PDF的类型为application / octet-stream,我本想会是application / pdf]。 JPEG图像似乎输入正确,但是,我认为这不是问题。

我尝试在解码时使用atob并使用/ $ results以二进制形式接收文件内容。

任何想法都很棒。

我似乎在从MS Graph API解码附件时遇到问题。至少,我认为这就是问题所在。下面是一个简单的JS示例。 local.downloadAttachment =函数(数据){...

javascript microsoft-graph exchangewebservices azure-ad-graph-api microsoft-graph-mail
2个回答
0
投票

根据文档,Office 365 Unified API返回附件的**base64-encoded**内容。如果您对处理这些内容感兴趣,则首先需要将它们转换为原始二进制数据。从理论上讲,可以很容易地通过调用window.atob(base64string)函数将base64-decode内容字符串然后将其转换为字节数组来完成。


0
投票

感谢@Mohit Verma,您帮助我重回正轨。但是,双重解码似乎不是确切的问题,因为以下代码抛出

© www.soinside.com 2019 - 2024. All rights reserved.