microsoftgraph / microsoftgraph/msgraph-sdk-python
Error 400 after successful file upload
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 630
- Forks
- 96
- Ø Merge
- 15 Std. 20 Min.
- Gemergte PRs (30 T.)
- 3
Beschreibung
Describe the bug
I'm testing an upload process, here's an anonymized snippet of the code:
async def _upload_file(self, drive_id, filename, file_content, folder_name=None):
properties = DriveItemUploadableProperties(
additional_data={
"@microsoft.graph.conflictBehavior" : "replace",
},
)
request_body = CreateUploadSessionPostRequestBody(item=properties)
if folder_name is not None:
filename = folder_name + '/' + filename
session = await (
self.client
.drives.by_drive_id(drive_id)
.items.by_drive_item_id(f"root:/{filename}:")
.create_upload_session.post(body=request_body)
)
large_file_session = LargeFileUploadSession(
upload_url=session.upload_url,
expiration_date_time=session.expiration_date_time,
additional_data=session.additional_data,
is_cancelled=False,
next_expected_ranges=session.next_expected_ranges
)
task = LargeFileUploadTask(upload_session=large_file_session, request_adapter=self.client.request_adapter, stream=file_content)
upload_result = await task.upload()
return upload_result
The upload proceeds as expected, but I get the following exception anyway:
APIError
Code: 400
message: The server returned an unexpected status code and no error class is registered for this code 400
Expected behavior
Either a more clear error code if there is a problem I'm not seeing, or no error after a successful upload.
How to reproduce
See code in first section.
SDK Version
1.17.0
Latest version known to work for scenario above?
No response
Known Workarounds
Ignoring the exception for error 400 works, but is not ideal.
Debug output
APIError
Code: 400
message: The server returned an unexpected status code and no error class is registered for this code 400
Configuration
Windows 11, x64. I haven't tested on any other systems at present.
Other information
This may not be related to the SDK at all, but if it is an error in the request that isn't clear from the documentation I've read on this. I will echo comments elsewhere that the documentation on using the SDK for uploads is extremely limited and I had to cobble a lot of this together from responses to other questions here.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, den im Issue gezeigten Upload mit msgraph-sdk-python 1.17.0 zu reproduzieren, wobei der Schwerpunkt auf LargeFileUploadTask.upload() und dem gemeldeten APIError 400 liegt. Untersuche das Upload-Ergebnis und die Fehlerbehandlung rund um die Anfrage, um festzustellen, warum ein erfolgreicher Upload dennoch eine Ausnahme erzeugt. Als erledigt gilt die Aufgabe, wenn das Verhalten erklärt ist und das SDK das Ergebnis angemessen meldet oder den erforderlichen Workaround dokumentiert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- api
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100