2017-10-10 88 views
1

我遇到了使用v1.0 Microsoft Graph API将文件上传到上传会话的问题。 我的步骤:如何为上传会话设置Content-Range标题Microsoft Graph API

  1. 获取访问令牌:成功
  2. 选择文件/新建上传会话:成功(我回来了的uploadURL上传字节)
  3. 上传字节数的uploadURL:失败与下面的错误。

这里是我收到的错误:

{ 
    "error": 
    { 
     "code":"invalidRequest", 
     "message":"The Content-Range header is missing or malformed." 
    } 
} 

我曾尝试使用以下格式试过,我仍然收到了同样的错误。

"bytes 0-100/100" 
"0-100/100" 
"0-100" 

我这篇文章从的Mircosoft https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/item_createuploadsession

以下这里是我的功能上传到的uploadURL从创建上载会话

public uploadToSession(file: HTMLInputElement, session: any, fileData: any) { 
    var headers = new Headers(); 
    headers.append('Content-Length', fileData.length); //(ie: "100") 
    headers.append('Content-Range', fileData.range); //(ie: "bytes 0-100/100") 
    this.http.put(session.uploadUrl, { headers }) 
     .subscribe(
      (res: Response) => console.log(res), 
      error => console.log(error) 
     ); 
} 

任何帮助深表感谢retreived!提前致谢。

+0

这个API背后的想法是,你正在发送块吗?所以它的工作原理是总文件大小要大于一个块,即“字节0-50/100”,后面跟着“字节50-100/100”。 – Fenton

+0

这是正确的API旨在允许夹头发送,但是,从我的理解,你也可以发送整个文件,只要大小小于60 MiB。你有没有看过文件说明你不能一次发送整个文件?我试图避免使用两种不同的上传方法,具体取决于大小,但如果这是唯一的方法,那就这样做吧。 –

+0

不 - 我找不到任何东西,但是您的代码看起来不错,所以我正在创新可能发生的潜在问题 – Fenton

回答

2

Content-Range头具有以下格式:

Content-Range: bytes <startindex>-<endindex>/<totallength> 

您的问题似乎是索引(从0开始)和长度的混合(从1开始)。对于一个100字节的文件,你的头文件需要如下所示:

Content-Range: bytes 0-99/100 
+0

谢谢布拉德。如果这个值是一个字符串? –