Microsoft Graph: загрузка файла через Rest API

Я хотел бы загрузить содержимое документа sharepoint через API Graph Microsofts.

Когда я показываю сведения о документе на веб-сайте sharepoint, я вижу следующий путь в сведениях о документе: My Company Team Site > Documents > My Application > file.xlsx

Подход 1:

С помощью графического обозревателя я могу выполнить следующий запрос: https://graph.microsoft.com/v1.0/sites/root/drives . Он возвращает единственный объект под названием «Документы» с этим WebURL: https://myCompany.sharepoint.com/Shared%20Documents

Однако я не знаю, как мне оттуда поступить и добраться до подэлементов папки, все мои попытки вызывали ошибки HTTP.

Подход 2:

В качестве альтернативы я также попытался «получить сайт sharepoint на основе его относительного пути»: https://graph.microsoft.com/v1.0/sites/myCompany.sharepoint.com:/

Этот запрос также дает один результат с отображаемым именем «Сайт группы моей компании» и идентификатором, который выглядит следующим образом: myCompany.sharepoint.com,45aaf871-b578-0000-...., но я не уверен, как действовать дальше и как должен выглядеть оставшийся URL.

Вопрос:

Какой правильный подход? Как я могу перебирать «файлы в папке» в sharepoint и как мне получить siteID / itemID документов / папок, которые я ищу?


person e_mai    schedule 15.03.2020    source источник


Ответы (2)


Вы на правильном пути, давайте попробуем соединить точки воедино.

Предполагается, что файл с именем Guide.docx находится в папке Archive в библиотеке.

Подход 1

Однако я не знаю, как мне оттуда поступить и добраться до подэлементов папки, все мои попытки вызывали ошибки HTTP.

Для этого подхода следующий запрос демонстрирует, как загрузить файл:

GET https://graph.microsoft.com/v1.0/sites/root/drive/root:/archive/guide.docx:/content

где :/archive/guide.docx:/ - синтаксис адресации на основе пути, используемый для нацеливания на файл внутри папки

Примечание: нет необходимости явно указывать путь к библиотеке (Shared Documents), поскольку это диск по умолчанию.

Подход 2

Этот запрос также дает один результат с отображаемым именем "My Company Team Site" и идентификатором, который выглядит следующим образом: myCompany.sharepoint.com, 45aaf871-b578-0000 -...., но я не знаю, как действовать дальше. там и как должен выглядеть оставшийся URL.

Поскольку siteId определяется (myCompany.sharepoint.com,45aaf871-b578-0000..), следующий запрос демонстрирует, как адресовать файл с помощью site id и file path:

GET https://graph.microsoft.com/v1.0/sites{site-id}/drive/root:/archive/guide.docx:/content

Ссылки

Адресация ресурсов на диске в OneDrive

person Vadim Gremyachev    schedule 16.03.2020
comment
Это работает, и я могу перейти к файлу, который хочу загрузить, но как только я добавлю /content, я снова получаю ошибку HTTP. Я проверил, и у меня есть все необходимое разрешения для загрузки. Вы знаете, почему /content по-прежнему вызывает ошибку? - person e_mai; 17.03.2020

Получить идентификатор сайта:

https://graph.microsoft.com/v1.0/sites/yourtenant.sharepoint.com:/sites/lee

Получите файлы (идентификатор элемента) в своей папке. (папка в моей тестовой библиотеке-> MyDOc / Folder)

https://graph.microsoft.com/v1.0/sites/siteid/drives/b!kan3K2m2N0Ww9Vn31kUuSLJVeywG43tAsaIcpv7Mme1FME9qbHnDRJrbrhnPTRCs/root:/folder:/children
person Lee_MSFT    schedule 16.03.2020
comment
Святой недокументированный Бэтмен - person dtheodor; 16.04.2021