rest - SharePoint REST API 在下载过程中返回不完整的文件内容
问题描述
我致力于获取和下载 SharePoint 数据的应用程序。对于 SharePoint 中的每个文件夹,我可以使用下一个 SharePoint REST API 端点获取给定文件夹中所有文件的列表:
/_api/web/GetFolderById('<folder_guid>')/Files
为每个文件提供了预期的大小和 guid,因此当我想下载文件时可以使用它们。然后我使用 SharePoint REST API 中的下一个端点来实际获取文件内容:
/_api/web/GetFileById('<file_guid>')/$value
有时,当我下载文件时,我得到的数据比预期的要少:下载数据的大小与我在获取文件属性列表时获得的值不同。但是,当我尝试再次获取其内容时,它可以成功下载(下载数据的大小等于预期值),或者我可以获得另一个不完整的数据。
我验证了第一个端点(用于获取文件夹中所有文件的属性)返回正确的文件大小。问题在于第二个电话。
我看到响应中有带有“分块”值的“传输编码”标头。因此,当我的 http 客户端执行分块数据下载时,如果在某个时间点收到零块,那么我们根据定义到达了正文的末尾。因此,在某些情况下,SharePoint 在不应发送它们时返回不完整的数据或零块。
这种奇怪行为的原因是什么?这是一个已知问题吗?
解决方案
我们实际上也看到了这种奇怪的行为,许多文件只是小的 aspx 文件,大约 3-4kb,它们不断地小 15%,而且比文件属性中出现的还要多。我们也在使用 REST API,这真的很令人沮丧。Sharepoint Online 中的所有这些奇怪的错误都非常烦人。
推荐阅读
- spring - 从 Spring Boot 2.4.6 移动到 2.5.4 后出现 IllegalAccessError
- sql - Postgresql UPSERT 使用 ON CONFLICT 错误
- flutter - 在 performLayout 中构建和添加子项
- node.js - 如何在嵌套对象中发送新添加的项目作为响应
- json - 如何在 MongoDB shell 中正确使用 deleteMany() 和 $and 查询?
- amazon-web-services - AWS EKS Kubernetes pod 需要大量时间才能准备就绪
- android - React Native 错误:只能在对象上定义属性
- snowflake-cloud-data-platform - Snowflake 中的成本效益约束检查
- python - 尝试在 mysql 数据库中设置枚举数据类型时出现问题
- css - 全宽 div 背景