使用Office365 REST Python客户端实现SharePoint全尺寸文件通用上传咨询
适配任意文件大小的通用上传方案
存在可兼容所有大小文件的实现方案,你之前用分块接口传小文件得到0字节的核心原因是设置的size_chunk参数不符合SharePoint接口的强制规范,具体实现逻辑如下:
- 先获取待上传本地文件的体积,设置4MB为切换阈值:
- 文件体积小于4MB时,直接调用小文件直传接口:
target_file = target_folder.upload_file(name, file_content).execute_query(),该接口没有额外参数限制,稳定性更高 - 文件体积大于等于4MB时,调用分块上传接口,只要
size_chunk参数取值符合规范即可正常上传
- 文件体积小于4MB时,直接调用小文件直传接口:
size_chunk参数说明与取值规范
参数含义
size_chunk是分块上传时每个分片的字节数,SharePoint REST接口对分块大小有强制要求:除了文件的最后一个分片之外,其余所有分片的大小必须是320KB(即327680字节)的整数倍,不符合该要求的分片会被接口直接丢弃,这也是你之前上传得到0字节文件的根本原因。
合理取值规则
- 强制前提:你设置的
size_chunk数值必须是327680字节的整数倍,这是满足上传成功的首要条件 - 常规网络环境(上行带宽≥20Mbps)建议取值为10MB(即10485760字节),兼顾传输效率和重传成本
- 弱网环境(上行带宽<5Mbps)建议取值为4MB(即4194304字节,为官方推荐的最小分块值),避免单次传输失败后浪费过多流量
- 超大文件(≥10GB)且网络稳定的场景,可将取值提升到25MB~50MB,减少分块数量降低请求开销
内容的提问来源于stack exchange,提问作者Sara Chaoufi
相关产品推荐
相关产品推荐

