Невозможно загрузить файл на 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())