Javascript 如何使用MS Graph API上传任何文件?
我正在跟踪,我想将任何类型的文件上载到OneDrive。它说它接受文件内容的缓冲区,但我下面的代码似乎不适用于任何类型的文件。该文件已上载,但无法打开,因此肯定会将内容弄乱 使用以下方法,我尝试获取正文内容,以便可以将其与请求一起发送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;
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的示例将非常有帮助。我无法在网上找到任何样本,并且文档不充分。