如何使用 MS Graph API 上传任何文件?

How to upload any file using MS Graph API?

我正在关注 this,我想将任何类型的文件上传到 OneDrive。它说它接受文件内容的缓冲区,但我的以下代码似乎不适用于任何类型的文件。文件上传了,但是打不开,肯定是内容乱了。

我正在尝试使用以下方法获取正文内容,以便我可以将它们与请求一起发送。

private fileToBuffer(file: File): Observable<any> {
    return Observable.create(observer => {
        var arrayBuffer;
        var fileReader = new FileReader();
        fileReader.onload = function () {
            arrayBuffer = this.result;
            observer.next(arrayBuffer);
            observer.complete();
        };
        fileReader.readAsArrayBuffer(file);
    });
}

我没有注意到 Angular 2 的 http PUT 将正文作为字符串。所以,我求助于使用 XHR 上传一个文件及其内容。

var oReq = new XMLHttpRequest();
oReq.open("PUT", url, true);
oReq.setRequestHeader("Content-Type", "text/plain");
oReq.onload = function(e){
    console.log('done');
};
oReq.send(arrayBuffer);