You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在剩余0字节时用FinishUpload结束SharePoint分片文件上传?

SharePoint Online REST分片上传:剩余0字节时用FinishUpload收尾的方法

嘿,我对这个分片上传流程门儿清,来给你唠唠剩余0字节时怎么用FinishUpload搞定收尾~

首先得明确:哪怕最后剩余0字节,你也必须调用FinishUpload来完成整个上传流程,不然文件会卡在未完成状态,根本没法正常用。下面是具体的操作步骤和注意点:

核心逻辑

FinishUpload需要两个关键参数,再配合一个特殊的请求体:

  • uploadId:就是你第一次调用StartUpload时拿到的那个GUID,全程必须用同一个,不能换
  • fileOffset:这个是你已经上传的总字节数,也就是文件的总大小(因为剩余0字节,说明已上传=总大小)
  • 请求体:传一个空的byte[](也就是0字节的数组),不能省略

具体操作步骤

  1. 确认已上传总字节数
    把之前StartUpload和所有ContinueUpload上传的字节数加起来,这个数值要和文件的总大小完全一致(毕竟剩余0字节)。比如你分两次传了5MB+5MB,总大小10MB,那fileOffset就是10*1024*1024=10485760。

  2. 构造FinishUpload请求

    • 请求方法:POST
    • 请求URL格式:
      /_api/web/getfolderbyserverrelativeurl('{你的文件夹路径}')/files/add(overwrite=true,url='{文件名}')/FinishUpload(uploadId='{你的uploadId}',fileOffset={已上传总字节数})
      
    • 请求头:要带上正确的授权信息(比如Bearer Token),还有Content-Type: application/octet-stream
    • 请求体:直接传空的byte数组就行,比如new byte[0](不同语言写法不一样,但本质是0字节的二进制数据)
  3. 处理响应
    成功调用后,会返回文件的元数据(比如文件ID、URL、大小这些),这就说明上传完全搞定了。

避坑提醒

  • 别偷懒跳过FinishUpload:哪怕剩余0字节,不调用这个方法,SharePoint会认为上传没完成,文件会变成“损坏”或者不可访问的状态
  • 偏移量一定要准确:fileOffset必须严格等于已上传的总字节数,差一个字节都会返回400错误
  • 全程用同一个uploadId:从Start到Finish,这个GUID必须一致,不然会直接报错

举个实际的请求例子(伪代码风格):

假设已上传总字节数是10485760(10MB),uploadId是123e4567-e89b-12d3-a456-426614174000,文件夹是/Shared Documents,文件名是report.pdf
请求URL:
/_api/web/getfolderbyserverrelativeurl('/Shared Documents')/files/add(overwrite=true,url='report.pdf')/FinishUpload(uploadId='123e4567-e89b-12d3-a456-426614174000',fileOffset=10485760)
请求体:空byte数组
请求头:Authorization: Bearer {你的token},Content-Type: application/octet-stream

内容的提问来源于stack exchange,提问作者Equalsk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:27