我似乎在从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 =函数(数据){...
根据文档,Office 365 Unified API返回附件的**base64-encoded**
内容。如果您对处理这些内容感兴趣,则首先需要将它们转换为原始二进制数据。从理论上讲,可以很容易地通过调用window.atob(base64string)
函数将base64-decode
内容字符串然后将其转换为字节数组来完成。
感谢@Mohit Verma,您帮助我重回正轨。但是,双重解码似乎不是确切的问题,因为以下代码抛出