从createUploadSession创建的放置在uploadUrl上的MS图导致404

问题描述 投票:0回答:1

在将文件恢复上传到共享文件时,无法使用从createUploadSession返回的网址。

直接使用/ content上载有效,但限制为4MB

方案UserA共享具有对UserB的编辑权限的文件使用ms图javascript sdk

const { uploadUrl } = await this.client.api(`/drives/${driveId}/items/${id}/createUploadSession`).post({});

尝试使用uploadUrl会得到404 {"error":{"code":"itemNotFound","message":"The resource could not be found."}}

有趣的是uploadUrl看起来像这样https://{tenant}-my.sharepoint.com/personal/{UserA}_{tenant}_com/_api/v2.0/drives/${driveId}/items/${id}/uploadSession?guid='5b85df9e-b524-4000-9883-8106a13e592f'...

不确定是否与UserA相关的内容是否嵌入URL中。

如果UserA访问相同的文件并进行类似的上载,则在该文件上一切正常。

以下所有请求对任何一个用户都可以正常工作:

await this.client.api(`/drives/${driveId}/items/${id}/checkout`).post({});
await this.client.api(`/drives/${driveId}/items/${id}/content`).putStream(fs.createReadStream(filePath));
await this.client.api(`/drives/${driveId}/items/${id}/checkin`).post({});

[uploadUrl从createUploadSession返回的信息对任何有权创建上传会话的用户均应有效。

microsoft-graph onedrive microsoft-graph-sdks microsoft-graph-files
1个回答
0
投票

您无法上载/替换从其他用户的OneDrive共享的文件。创建上传会话会在云端硬盘中创建一个临时文件来写入每个块。由于用户B对用户A的OneDrive没有读/写权限,因此他们无法创建该临时文件(因此404 - Not Found)。

© www.soinside.com 2019 - 2024. All rights reserved.