cloudflare / cloudflare/cloudflare-python

Create Image Upload is broken for Sync and Async

Abierto
#2,569 3 comentarios 6 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
506
Forks
148
Merge medio
3 h 15 min
PR fusionados (30 d)
1

Descripción

### Confirm this is a Python library issue and not an underlying Cloudflare API issue.

- [x] 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
```python
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

```python
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

```python
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

```Python

```

### OS

macOS

### Python version

3.12.9

### Library version

v4.1.0

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza con images.v1.create tanto para los clientes Cloudflare como AsyncCloudflare y, después, inspecciona tests/api_resources/images/test_v1.py alrededor de la cobertura enlazada. Reproduce la carga multipart usando la tupla mostrada para un archivo WebP y añade cobertura para los casos síncrono y asíncrono una vez que la solicitud acepte la carga sin el error de análisis de los campos del formulario.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
api
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.