首页 > 解决方案 > 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 在不应发送它们时返回不完整的数据或零块。

这种奇怪行为的原因是什么?这是一个已知问题吗?

标签: restsharepointsharepoint-online

解决方案


我们实际上也看到了这种奇怪的行为,许多文件只是小的 aspx 文件,大约 3-4kb,它们不断地小 15%,而且比文件属性中出现的还要多。我们也在使用 REST API,这真的很令人沮丧。Sharepoint Online 中的所有这些奇怪的错误都非常烦人。


推荐阅读