Hola
,
He leído estas útiles publicaciones (1, 2); sin embargo, todavía me falta algo que me impide subir con éxito un avatar de Python a Discourse usando la API. Soy el administrador de mi sitio Discourse.
La buena noticia: Funciona en Postman como se muestra a continuación.
La no tan buena noticia: No he podido traducir esto a Python (obteniendo errores 400 o 422, dependiendo de lo que intente). He probado lo siguiente:
img_data = requests.get("my_image_url").content
data={
"type": "avatar",
"user_id": user_id,
"synchronous": True,
"file": img_data
}
url = "<my site>/uploads.json"
response = requests.request("POST", url, headers=headers, data=data)
Esto me da un error 400. También he intentado usar una imagen local solo para ver si podía hacer que funcionara:
with open('my_local_image.jpg', "rb") as f:
image_b64 = base64.b64encode(f.read()).decode("utf8")
data={
"type": "avatar",
"user_id": user_id,
"synchronous": True,
"file": image_b64
}
url = "<my site>/uploads.json"
response = requests.request("POST", url, headers=headers, data=data)
Esto me da un error 422:
"failed":"FAILED","message":"undefined method `tempfile\\' for #\\u003cString:0x00007f5befda7af8\\u003e"
¡Siento que estoy cerca pero soy algo nuevo en el uso de API. Cualquier indicación en la dirección correcta sería muy apreciada!
