microsoftgraph / microsoftgraph/msgraph-sdk-python

Error 400 after successful file upload

Aperta
#1,067 2 commenti 2 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

area:uploads type:bug
Lingua principale
Python
Stelle
630
Fork
96
Merge medio
15h 20m
PR unite (30g)
3

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia riproducendo l’upload mostrato nell’issue con msgraph-sdk-python 1.17.0, concentrandoti su LargeFileUploadTask.upload() e sull’APIError 400 segnalato. Esamina il risultato dell’upload e la gestione degli errori intorno alla richiesta per determinare perché un upload riuscito produca comunque un’eccezione. Il lavoro è completato quando il comportamento è spiegato e l’SDK segnala correttamente l’esito oppure documenta il workaround necessario.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
api
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.