MS Graph положить на uploadUrl созданный из результатов createUploadSession в 404 - PullRequest
0 голосов
/ 29 октября 2019

При выполнении возобновляемой загрузки в файл, к которому был предоставлен общий доступ, URL-адрес, возвращенный из createUploadSession, не может быть использован.

Загрузка напрямую с / content работает, но имеет ограничение 4 МБ

Сценарий UserA предоставляет доступ к файлу с правами на редактирование UserB Использование ms graph 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, должно быть допустимо для любого пользователя, который имел доступ к созданию сеанса загрузки.

1 Ответ

0 голосов
/ 09 ноября 2019

Вы не можете загружать / заменять файлы, к которым предоставлен общий доступ из OneDrive другого пользователя. При создании сеанса загрузки на диске создается временный файл для записи каждого чанка. Поскольку пользователь B не имеет доступа для чтения / записи к OneDrive пользователя A, он не может создать этот временный файл (таким образом, 404 - Not Found).

...