SharePoint大文件分片上传:创建上传会话报错的解决方案咨询
错误原因分析
你遇到的-2147024809参数错误,核心问题是调用startupload时没有在请求体中传递第一个分片的二进制内容,同时请求方法、请求头的配置也可能存在疏漏。
正确分片上传步骤
1. 初始化上传会话(获取UploadId)
使用POST请求调用startupload,这一步必须传递第一个分片的内容,具体要求:
- 请求URL示例(替换实际站点、文件夹、文件名):
${siteUrl}/_api/web/GetFolderByServerRelativeUrl('Folder/path')/Files/add(url='${fileName}', overwrite=true)/startupload - 请求头配置:
Content-Type: application/octet-stream- 身份验证头(如
Authorization: Bearer {token},根据你的认证方式调整)
- 请求体:第一个分片的二进制数据,建议分片大小≥5MB(SharePoint对最小分片有默认要求)
请求成功后,响应会返回包含UploadId的JSON,示例:
{"UploadId":"{12345678-1234-1234-1234-1234567890AB}"}
这个UploadId是后续分片上传的唯一标识。
2. 上传中间分片(文件大于一个分片时执行)
用continueupload方法上传剩余分片,每次上传需指定已上传的总字节数:
- 请求URL示例:
其中${siteUrl}/_api/web/GetFolderByServerRelativeUrl('Folder/path')/Files/continueupload(uploadId='${uploadId}', fileOffset=${offset})fileOffset是已上传的总字节数(比如第一个分片是5MB,即5*1024*1024=5242880) - 请求头和请求体要求和
startupload一致:传递当前分片的二进制数据
3. 完成上传
所有分片上传完毕后,调用finishupload结束会话:
- 请求URL示例:
其中${siteUrl}/_api/web/GetFolderByServerRelativeUrl('Folder/path')/Files/finishupload(uploadId='${uploadId}', fileOffset=${totalFileSize})fileOffset设置为文件的总字节数(50MB即50*1024*1024=52428800) - 若最后一个分片未填满要求大小,可在请求体中传递剩余的文件内容
关键注意事项
- 确保文件夹路径
ServerRelativeUrl是站点内的相对路径(从站点根目录开始,比如Shared Documents/TargetFolder) - 身份验证必须有效,且账号拥有目标文件夹的写入权限
- 分片大小建议保持一致,避免过小的分片触发额外的验证错误
内容的提问来源于stack exchange,提问作者Bro Lee
相关产品推荐
相关产品推荐

