Загрузка файла MS Graph API из SharePoint - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь загрузить XML-файлы из библиотеки форм с помощью API Graph, но это не работает. Я ссылаюсь на документацию здесь , которая, как мне кажется, говорит мне, что правильный синтаксис - GET /sites/{siteId}/drive/items/{item-id}/content. Однако, когда я использую этот синтаксис с помощью Graph Explorer, он дает мне файл 404 Not Found. Затем я попробовал синтаксис GET /drives/{drive-id}/items/{item-id}/content, и он возвращает код состояния 0, но тело сообщения просто говорит {"isTrusted": true}. Я должен отметить, что если я удаляю последний параметр в URL-адресе и использую синтаксис GET /drives/{drive-id}/items/{item-id}, он возвращает информацию о файле.

Что-то не так с синтаксисом? Возможно, это не то, что вы можете сделать с файлами XML в библиотеке форм? Может быть, это предел Graph Explorer?

1 Ответ

3 голосов
/ 04 октября 2019

Когда вы нажимаете конечную точку /drives/{drive-id}/items/{item-id}/content, Microsoft Graph отвечает перенаправлением 302, которое браузер отклоняет из-за политики CORS.

Вот объяснение из Загрузка файлов OneDrive в разделе приложений JavaScript :

Для загрузки файлов из OneDrive в приложении JavaScript нельзя использовать API / content, поскольку при этом происходит перенаправление 302. Перенаправление 302 явно запрещено, когда требуется предварительная проверка CORS, например, при предоставлении заголовка авторизации.

Вместо этого вашему приложению необходимо выбрать свойство @ microsoft.graph.downloadUrl, которое возвращает тот же URL, что /контент был бы перенаправлен на. Этот URL-адрес может быть запрошен напрямую с помощью XMLHttpRequest. Поскольку эти URL-адреса предварительно аутентифицированы, их можно получить без предварительного запроса CORS.

Чтобы загрузить файл в обозревателе графиков, сначала сделайте запрос, включающий свойство @microsoft.graph.downloadUrl:

GET /drive/items/{item-id}?select=@microsoft.graph.downloadUrl

, а затем файл можно загрузить, пометив другой запрос на URL, указанный в @microsoft.graph.downloadUrl свойство

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...