如何使用SPFX或SharePoint REST API向SharePoint Online上传10GB/50GB大文件
上传能力确认
完全可以使用SPFX File Upload相关组件或者SharePoint REST API上传10GB、50GB级别的大文件,当前SharePoint Online单文件上传上限为250GB,你的需求完全在官方限制范围内。
分片上传要求
10GB、50GB级别的大文件必须采用分片上传方案,不支持单请求直接上传:
- 单文件大小超过250MB时,单请求上传会触发超时、请求体超限等错误,必须拆分成分片逐个上传
- 分片上传支持断点续传,某一片传输失败仅需要重传对应分片,不需要重新上传整个文件,大幅提升大文件上传成功率
分片大小规范
SharePoint Online对分片大小的要求如下:
- 单分片支持的大小范围为256KB ~ 250MB
- 推荐设置分片大小为10MB ~ 100MB区间:网络稳定的场景可以选更大的分片减少请求次数,网络波动大的场景选更小的分片降低重传成本
- 最后一个分片不受256KB下限限制,可小于该值
具体实现方案
基于SPFX实现
推荐直接使用@pnp/sp库封装的分片上传能力,不需要手动处理分片拆分、会话维护、合并逻辑:
import { sp } from "@pnp/sp"; import "@pnp/sp/files"; // 选择的待上传文件对象 const targetFile = document.getElementById("uploadFileInput").files[0]; // 分片大小设置为50MB,可自行调整 const chunkSize = 1024 * 1024 * 50; // 调用分片上传方法 const uploadResult = await sp.web .getFolderByServerRelativePath("/sites/你的站点地址/目标文档库路径") .files.addChunked( targetFile.name, targetFile, (progressInfo) => { // 可自定义进度展示逻辑 console.log(`当前上传进度:${progressInfo.progress}%`); }, true, // 重名文件是否覆盖 chunkSize );
如果是用SPFX自带的FilePicker组件,只需要开启大文件上传配置即可,组件会自动处理分片逻辑。
基于原生SharePoint REST API实现
如果需要自行调用REST API实现,流程如下:
- 调用
createUploadSession接口创建上传会话,获取专属的上传端点 - 按预设分片大小拆分本地文件,逐个上传分片,每个请求需要在请求头中声明当前分片对应整个文件的字节范围
- 所有分片上传完成后,SPO会自动合并所有分片为完整文件,上传会话自动失效
注意:上传会话的有效期为24小时,超过24小时未完成全部分片上传,会话会自动过期,需要重新创建会话上传。
内容的提问来源于stack exchange,提问作者Faisal
相关产品推荐
相关产品推荐

