Create Image Upload is broken for Sync and Async

Aperta
#2,569 3 commenti 6 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
api

Direzione di ricerca

Inizia con images.v1.create per entrambi i client Cloudflare e AsyncCloudflare, quindi esamina tests/api_resources/images/test_v1.py in corrispondenza della coverage collegata. Riproduci il caricamento multipart usando la tupla mostrata per un file WebP e aggiungi la coverage per i casi sincrono e asincrono quando la richiesta accetta il caricamento senza l’errore di parsing dei campi del form.

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

Descrizione

Confirm this is a Python library issue and not an underlying Cloudflare API issue.
  • This is an issue with the Python library
Describe the bug

The Cloudflare Image Create function is broken.

There is an example below, this has also been discussed on StackOverflow

https://stackoverflow.com/questions/79032782/error-5455-when-uploading-to-cloudflare-images-using-python-library

I cant see any test coverage for this use case.

https://github.com/cloudflare/cloudflare-python/blob/fc6ca90779cd230dc06445ba42e4c540da186ce0/tests/api_resources/images/test_v1.py#L28

To Reproduce

This is a working example using Python Requests

import requests
with open(
    "water bottle.webp", "rb"
) as f:
    data = f.read()

# try requests
files = {
    "file": (
        "water bottle.webp",
        data,
        "image/webp",
    )
}

response = requests.post(
    url=f"https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/images/v1",
    headers={
        "Authorization": f"Bearer ..."
    },
    files=files,
)
print(response.status_code)
print(response.json())

This is a broken example using the Cloudflare Sync function

with open(
    "water bottle.webp", "rb"
) as f:
    data = f.read()

from cloudflare import Cloudflare

client = Cloudflare(
    api_token='...'
)

# Create a tuple: (filename, binary data, content type)
file_tuple = ("water bottle.webp", data,   "image/webp",)

cloudflare_image = await client.images.v1.create(
    account_id=CLOUDFLARE_ACCOUNT_ID,
    file=file_tuple,
)
print(cloudflare_image)

The output is

cloudflare.BadRequestError: Error code: 400 - {'result': None, 'success': False, 'errors': [{'code': 5400, 'message': 'Bad request: Error parsing form fields'}], 'messages': []}

This is a broken example using the Async Cloudflare function

from cloudflare import AsyncCloudflare

client = AsyncCloudflare(
    api_token='...'
)

# Create a tuple: (filename, binary data, content type)
file_tuple = ("water bottle.webp", data,   "image/webp",)

cloudflare_image = await client.images.v1.create(
    account_id=CLOUDFLARE_ACCOUNT_ID,
    file=file_tuple,
)
print(cloudflare_image)

The output is

cloudflare.BadRequestError: Error code: 400 - {'result': None, 'success': False, 'errors': [{'code': 5400, 'message': 'Bad request: Error parsing form fields'}], 'messages': []}
Code snippets

OS

macOS

Python version

3.12.9

Library version

v4.1.0

Lingua principale
Python
Stelle
509
Fork
150
Merge medio
3h 15m
PR unite (30g)
1

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.

Altre issue di cloudflare/cloudflare-python

Tutte le issue di cloudflare/cloudflare-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.