Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用MS Graph API上传任何文件?_Javascript_Onedrive_Microsoft Graph Api - Fatal编程技术网

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

Javascript 如何使用MS Graph API上传任何文件?,javascript,onedrive,microsoft-graph-api,Javascript,Onedrive,Microsoft Graph Api,我正在跟踪,我想将任何类型的文件上载到OneDrive。它说它接受文件内容的缓冲区,但我下面的代码似乎不适用于任何类型的文件。该文件已上载,但无法打开,因此肯定会将内容弄乱 使用以下方法,我尝试获取正文内容,以便可以将其与请求一起发送 private fileToBuffer(file: File): Observable<any> { return Observable.create(observer => { var arrayBuffer;

我正在跟踪,我想将任何类型的文件上载到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);
    });
}
private fileToBuffer(file:file):可观察{
返回可观察的。创建(观察者=>{
var arrayBuffer;
var fileReader=newfilereader();
fileReader.onload=函数(){
arrayBuffer=this.result;
下一位观察员(arrayBuffer);
observer.complete();
};
readAsArrayBuffer(文件);
});
}

我没有注意到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);

我没有注意到Angular2的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);

Hi Ibrahim,尝试使用Fiddler之类的工具获取上传的网络捕获,看看上传的内容是否符合您的预期。听起来您可能正在上载以某种方式编码的文件,而服务器可能正在原始存储该文件,而没有按照上载组件所期望的方式对其进行解码。@daspek一个如何使用OneDrive上载API的示例将非常有帮助。我在网上找不到任何示例,文档也不够。你好,Ibrahim,请尝试使用Fiddler之类的工具获取上传的网络捕获,然后查看上传的内容是否符合您的预期。听起来您可能正在上载以某种方式编码的文件,而服务器可能正在原始存储该文件,而没有按照上载组件所期望的方式对其进行解码。@daspek一个如何使用OneDrive上载API的示例将非常有帮助。我无法在网上找到任何样本,并且文档不充分。