Невозможно загрузить файл на One Drive через Python

Я попытался загрузить файл на один диск с помощью кода python:

Пожалуйста, мой скрипт загрузки ниже для справки:

url = f'https://graph.microsoft.com/v1.0/users/{user_id}/drive/root:/{local_file_path}:/createUploadSession'
headers = {
    'Authorization': 'Bearer {}'.format(access_token),
    'Content-Type': 'application/json'
}
session_data = {
    "item": {
        "@microsoft.graph.conflictBehavior": "replace",  # Action on conflict (replace, fail, etc.)
        "name": "2.txt"  # The file name in OneDrive
    }
}

upload_session = requests.post(url=url, headers=headers,json=session_data).json()

Сообщение об ошибке:

{"error": {"code": "Request_BadRequest", "message": "Specified HTTP method is not allowed for the request target.",
"innerError": {"date": "2024-11-07T04:21:05", "request-id": "7be5355c-381a-4ea8-9d89-0b0a99208bb4", "client-request-id":
"7be5355c-381a-4ea8-9d89-0b0a99208bb4"}}}

Правильная структура URL должна быть такой https://graph.microsoft.com/v1.0/users/{user_id}/drive/root:/{имя_файла}:/createUploadSession, где:

{user_id} - это ваш идентификатор пользователя OneDrive. {имя_файла} - это имя файла, который вы хотите загрузить. Заголовок авторизации: Убедитесь, что access_token действителен и имеет необходимые разрешения (например, Files.ReadWrite для OneDrive). попробуйте это, может поможет

 import requests

# Variables
user_id = 'your_user_id'
access_token = 'your_access_token'
file_name = '2.txt'  # Replace with your file's name
local_file_path = f'/drive/root:/{file_name}:/createUploadSession'

# URL and headers
url = f'https://graph.microsoft.com/v1.0/users/{user_id}{local_file_path}'
headers = {
    'Authorization': f'Bearer {access_token}',
    'Content-Type': 'application/json'
}

# JSON data for session
session_data = {
    "item": {
        "@microsoft.graph.conflictBehavior": "replace",  # Action on conflict
        "name": file_name  # Name to be used in OneDrive
    }
}

# Create upload session
response = requests.post(url=url, headers=headers, json=session_data)

# Check for errors
if response.status_code == 200:
    upload_session = response.json()
    print("Upload session created:", upload_session)
else:
    print("Error:", response.json())
Вернуться на верх