Skip to content

Uploading to a folder results in 400 Client Error post 2.5.9 (GraphClient) #993

@Fatiz

Description

@Fatiz

Python3.12

Minimal reproducible code on version>=2.5.10:

import os
from office365.graph_client import GraphClient

client_id = os.getenv('M365_ID')
client_secret = os.getenv('M365_SECRET')
client_tenant = os.getenv('M365_TENANT')

client = GraphClient.with_client_secret(client_tenant, client_id, client_secret)

folder_item = client.shares.by_url(
    "https://<REDACTED>.sharepoint.com/sites/Path/to/folder/Folder name"
    ).drive_item.get().execute_query()
print(folder_item.is_folder)
with open("./test-upload.txt", "rb") as f:
    file = folder_item.upload_file(f).execute_query()
print("File Uploaded")

On 2.6.x

import os
from office365.graph_client import GraphClient

client_id = os.getenv('M365_ID')
client_secret = os.getenv('M365_SECRET')
client_tenant = os.getenv('M365_TENANT')

client = GraphClient(tenant=client_tenant).with_client_secret(client_id, client_secret)

folder_item = client.shares.by_url(
    "https://<REDACTED>.sharepoint.com/sites/Path/to/folder/Folder name"
    ).drive_item.get().execute_query()
print(folder_item.is_folder)
with open("./test-upload.txt", "rb") as f:
    file = folder_item.upload_file(f).execute_query()
print("File Uploaded")

Both result in the following error:
version>=2.5.10

Traceback (most recent call last):
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_request.py", line 37, in execute_query
    response = self.execute_request_direct(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_request.py", line 101, in execute_request_direct
    response.raise_for_status()
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/requests/models.py", line 1026, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://graph.microsoft.com/v1.0/shares/<redacted>/<redacted>:/test-upload.txt://content     

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/m365_testings/test-sharepoint-download.py", line 15, in <module>
    file = folder_item.upload_file(f).execute_query()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_object.py", line 54, in execute_query
    self.context.execute_query()
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_runtime_context.py", line 173, in execute_query
    self.pending_request().execute_query(qry)
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_request.py", line 41, in execute_query
    raise ClientRequestException(*e.args, response=e.response)
office365.runtime.client_request_exception.ClientRequestException: ('BadRequest', "Resource not found for the segment '<redacted>:'.", '400 Client Error: Bad Request for url: https://graph.microsoft.com/v1.0/shares/<redacted>/<redacted>:/test-upload.txt://content')

2.6.x

Traceback (most recent call last):
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_request.py", line 37, in execute_query
    response = self.execute_request_direct(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_request.py", line 101, in execute_request_direct
    response.raise_for_status()
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/requests/models.py", line 1026, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: https://graph.microsoft.com/v1.0/shares/<redacted>/driveItem:/test-upload.txt://content

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/m365_testings/test-sharepoint-download.py", line 15, in <module>
    file = folder_item.upload_file(f).execute_query()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_object.py", line 55, in execute_query
    self.context.execute_query()
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_runtime_context.py", line 173, in execute_query
    self.pending_request().execute_query(qry)
  File "/home/user/m365_testings/.venv/lib/python3.12/site-packages/office365/runtime/client_request.py", line 41, in execute_query
    raise ClientRequestException(*e.args, response=e.response)
office365.runtime.client_request_exception.ClientRequestException: ('BadRequest', "Resource not found for the segment 'driveItem:'.", '400 Client Error: Bad Request for url: https://graph.microsoft.com/v1.0/shares/<redacted>/driveItem:/test-upload.txt://content')

I am assuming this might be possibly related to the fix for: #866 which was included in 2.5.10.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions