Comment télécharger une image en utilisant l'API Discourse

Bonjour à tous,

Je tente de télécharger une image en utilisant l’API Discourse ci-dessous via du code Java :
https://discourse.example.com/uploads.json
en passant un JSON dans le corps de la requête :
{
“type” : “avatar”,
“user_id”: 1,
“synchronous”: true,
“file”: “Chaîne binaire”
}

Cependant, la réponse que je reçois est la suivante :

{
“failed”: “ÉCHEC”,
“message”: “méthode `tempfile’ non définie pour #String:0x000055fc2e0a01d8
}

Où est mon erreur ?
Merci de votre aide.

Je rencontre le même problème. @Saurabh_Khandelwal, si vous trouvez une solution, veuillez me répondre.

1 « J'aime »

Le paramètre file doit être nommé files[]. Consultez cette réponse pour un exemple avec Postman :

Voici mes données d’exemple
Array
(
[type] => avatar
[user_id] => 3
[synchronous] => 1
[file] => 1101000 1110100 1110100 1110000 1110011 111010 101111 101111 1101011 1101001 1111000 101101 1100100 1100101 1110110 101110 1100001 1110011 1110011 1111001 1110011 1110100 101101 1110101 1100011 101110 1100011 1101111 1101101 101111 1110011 1101001 1110100 1100101 1110011 101111 1100100 1100101 1100110 1100001 1110101 1101100 1110100 101111 1100110 1101001 1101100 1100101 1110011 101111 1110000 1101001 1100011 1110100 1110101 1110010 1100101 1110011 101111 110010 110000 110010 110000 101101 110000 110111 101111 1101011 1101001 1111000 1110100 1100101 1100001 1101101 1011111 1101001 1101101 1100111 110001 101110 1101010 1110000 1100111
)

Envoi du fichier sous forme de chaîne binaire. Réception de la réponse ci-dessous. Il s’agit de Drupal

/uploads.jsona renvoyé une réponse422 Entité non traitable: {"failed":"FAILED","message":"méthodetempfile’ non définie pour #\u003cArray:0x00007f0d5c784810\u003e"}

Essai d’intégration entre Drupal et Discourse.

Est-ce que vous avez réussi à faire fonctionner cela ? J’ai essayé toutes sortes de combinaisons avec Node.js, mais je n’arrive pas à faire fonctionner cela.

Je reçois une erreur 422 Unprocessable Entity.

Dans la documentation de Discourse, il est indiqué que le type de contenu de la requête est application/json.

Dans ce post, l’exemple Postman utilise form-data, et lorsque j’observe le compositeur dans l’interface web de Discourse, il utilise une requête multipart.

Quelqu’un sait comment faire cela via l’API sans utiliser le client Ruby ?

Cela ne semble toujours pas fonctionner.

Voici l’erreur que j’obtiens lorsque j’essaie de téléverser une image, en binaire.

Unprocessable Entity - {\"failed\":\"FAILED\",\"message\":\"undefined method `tempfile' for an instance of String\"}