أهلاً
،
لقد قرأت هذه المشاركات المفيدة (1, 2)؛ ومع ذلك، ما زلت أفتقد شيئًا يمنعني من تحميل صورة رمزية بنجاح من بايثون إلى Discourse باستخدام واجهة برمجة التطبيقات. أنا مسؤول موقع Discourse الخاص بي.
الخبر السار: يعمل الأمر في Postman كما هو موضح أدناه.
الخبر ليس جيدًا جدًا: لم أتمكن من ترجمة هذا إلى بايثون (أحصل على أخطاء 400 أو 422، اعتمادًا على ما أحاول). لقد حاولت ما يلي:
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)
هذا يعطيني خطأ 400. لقد حاولت أيضًا استخدام صورة محلية فقط لمعرفة ما إذا كان بإمكاني جعلها تعمل:
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)
هذا يعطيني خطأ 422:
"failed":"FAILED","message":"undefined method `tempfile\\' for #\\u003cString:0x00007f5befda7af8\\u003e"
أشعر أنني قريب ولكنني جديد نسبيًا في استخدام واجهات برمجة التطبيقات. أي إشارة في الاتجاه الصحيح ستكون موضع تقدير كبير!
