Хорошо, поэтому после некоторого тестирования с помощью Microsoft Graph Explorer я обнаружил, что самый простой способ загрузить файл в папку SharePoint, находящуюся в библиотеке документов (в отличие от библиотеки документов root), - это иметь дело с это как диск, использующий конечную точку:
/drives/{drive-id}/items/{parent-id}:/{filename}:/content
(https://docs.microsoft.com/en-us/graph/api/driveitem-put-content?view=graph-rest-1.0&tabs=http#http -request-to-upload-a-new-file )
Чтобы получить идентификатор диска библиотеки документов, вы можете добавить к запросу графа параметр odata $ expand = drive как:
`https://graph.microsoft.com/v1.0/sites/${siteId}/lists?$expand=drive`
Затем, наряду с другими атрибутами целевой библиотеки документов, вы найдет объект «диск», который содержит идентификатор диска , связанный с библиотекой документов, в которую вы хотите загрузить файл. Таким образом, вы должны сделать запрос PUT следующим образом:
fetch(`https://graph.microsoft.com/v1.0/drives/${libraryDriveId}/items/root:/${folderDisplayName}/${nameOfFile}:/content`, {
method: 'PUT',
mode: 'cors',
headers: new Headers({
'Authorization': `Bearer ${accesToken}`,
'Content-Type': 'text/plain'
}),
body: BINARY_STREAM_OF_DATA
}).then( (response) => {
if (!response.ok) return response.json().then((json) => {throw json});
return response.json();
}).then( (json) => {
//do whatever
}).catch( (err) => {
console.error(err);
})
libraryDriv
libraryDriveId
исходит из запроса https://graph.microsoft.com/v1.0/sites/${siteId}/lists?$expand=drive
/root:/${folderDisplayName}
означает, что папка, на которую вы нацеливаетесь внутри библиотеки документов, находится в «root:» (root библиотеки документов), за которым следует displayName
папки, в которую вы хотите загрузить файл в nameOfFile
- имя файла, который вы хотите загрузить