将空0字节上载到SharePoint Online

问题描述

我正在开发一个节点服务,该服务将文件在线推送到SharePoint。 我们正在使用用于JavaScript(..和类型)的官方Graph SDK。

到目前为止-一切都很好,但是如果文件夹中包含长度为0的文件,则我找不到将这些文件推送到驱动器的方法。

如果我尝试使用MicrosoftGraph.LargeFileUploadTask JavaScript类或OneDriveLargeFileUploadTask,则上载甚至无法开始,因为uploadSlice()中“ Content-Length”标头的格式失败。

我们可以跳过该类的代码,而自己上传一个空切片(所有代码仅适用于空文件):

uploadedFile = await client
    .api(uploadSession.url)
    .headers({
        "Content-Length": `0`,"Content-Range": `bytes 0-0/0`,})
    .put(file); //file is an empty Buffer

结果:Error: The Content-Range header is missing or malformed

我尝试提交空文件而不上传切片:根据https://docs.microsoft.com/de-de/graph/api/driveitem-createuploadsession?view=graph-rest-1.0#completing-a-file(我为上传会话明确设置了deferCommit=true

将文件的最终字节范围放入上载URL后,将最终的POST请求发送到内容长度为零的上载URL(当前仅在OneDrive for Business和SharePoint中受支持)。

uploadedFile = await client.api(requestUrl)
    .headers({
        "Content-Length": `0`,})
    .post(null);

不走运,这是响应:SharePoint / Graph期望丢失未知长度的字节,我认为:

{
    "@odata.context":"...","expirationDateTime":"2020-11-10T16:04:31.594Z","nextExpectedRanges":["0-"],"uploadUrl":"..."
}

该文件不存在。

我找不到有关如何使用Microsoft Graph处理空文件的任何文档。我曾考虑过要像创建在线touch这样创建一个空文件,而不是上传该文件,但是我也找不到任何方法。

也许这是不受支持的szenario?

解决方法

  • 听起来像这里不受支持的场景;即使当我从SharePoint Online进行尝试时,情况也是一样-因此,在这里我不会怪Microsoft Graph API。如果您仍然认为此功能可以为Microsoft增加更多价值,并且可以由Microsoft实施,那么可以考虑将其提交到Microsoft user voice中,以便他们考虑使用!!

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...