#api #microsoft-graph-api #onedrive #microsoft-graph-sdks
#API #microsoft-graph-api #onedrive #microsoft-graph-sdks
Вопрос:
Создайте сеанс загрузки для загрузки больших файлов в OneDrive.
Ниже приведен адрес запроса.
Тело запроса
{
"item": {
"@odata.type": "microsoft.graph.driveItemUploadableProperties",
"@microsoft.graph.conflictBehavior": "rename",
"name": "largefile.dat"
}
}
Возникает ошибка недопустимого запроса. Что в этом плохого? Я посмотрел учебник и протестировал его.
POST /drive/root:/{item-path}:/createUploadSession Тип содержимого: application/json
{
"item": {
"@odata.type": "microsoft.graph.driveItemUploadableProperties",
"@microsoft.graph.conflictBehavior": "rename",
"name": "largefile.dat"
}
}
Комментарии:
1.
400
Ответ должен содержать тело JSON с подробным описанием сбоя — у вас есть пример?2. @Brad { «ошибка»: { «код»: «Недопустимый запрос», «сообщение»: «Недопустимый запрос», «Внутренняя ошибка»: { «дата»: «2020-10-15T04:24:49», «идентификатор запроса»: «2733aaad-cb81-4762-acb5-cc069b44ddb2», «client-request-id»: «3cd178ab-3315-c047-cab8-20b1c8166ec4» } } }
3. Пожалуйста, удалите свойство odata.type и попробуйте. У меня это сработало.
Ответ №1:
Как предположил Шива в комментарии к вопросу, проблема заключается в том, что значение @odata.type
неверно для этого случая. В общем случае вы не должны предоставлять его вообще, поскольку схема строго типизирована, и поэтому соответствующее значение может быть получено без каких-либо подсказок, управляемых клиентом.
Комментарии:
1. var JObject = JObject . FromObject(новый { элемент = новый словарь<строка, объект> { { «@microsoft.graph.conflictBehavior», «переименовать» } }, FileSystemInfo = новый словарь<строка, объект> { { «@odata.type», «microsoft.graph.FileSystemInfo» } }, имя =fileName }); var toJSON = JsonConvert.SerializeObject(JObject); var content = new StringContent(toJSON, Encoding. UTF8, «application/json»); var response = await _client . PostAsync («users/» upn «/drive / root:/MailFiles/» fileName «:/createUploadSession», содержимое);
2. Если запрос, как указано выше, будет выполнен успешно. Однако, если файл преобразуется в байты и отправляется в сеанс загрузки, файл поврежден и загружен.
3. Возможно, документы следует обновить, поскольку пример содержит это поле данных: learn.microsoft.com/en-us/graph/api /…