Cela a été demandé à plusieurs reprises, mais aucune des solutions proposées jusqu’à présent ne fonctionne pour moi.
J’utilise Node.js pour télécharger des images pour un article via l’API.
Je peux créer des articles sans problème, mais les images ne se téléchargent pas.
Je convertis l’image (un fichier PNG) en une chaîne binaire.
Ensuite, j’envoie une requête application/json avec les identifiants de l’API dans les en-têtes et un corps comme celui-ci :
{
type: "composer",
synchronous: true,
file: `${binary_string}`
}
J’ai essayé d’utiliser file comme nom de champ pour le fichier, comme le mentionne la documentation de l’API, ainsi que files[], comme suggéré dans un autre post sur le Forum.
En utilisant file, je reçois une erreur 422 avec :
undefined method `tempfile' for #<String:0x00007fdfeba2b1d8>
En utilisant files[], je reçois une erreur 422 avec le message « Unprocessable Entity ».
Outre application/json comme indiqué dans la documentation, j’ai également essayé multipart/form-data, comme le fait l’interface web et comme l’a fait cet utilisateur.
Pour la requête en form-data, je l’ai fait comme ceci :
const form = new FormData();
form.append("type", "composer");
form.append("synchronous", "true");
form.append("files[]", this.stringToBinary(file.data!), {
contentType: file.mimetype,
});
http.post("/uploads.json", form.getBuffer(), {
headers: form.getHeaders(),
}) // les identifiants sont ajoutés
Avec cette méthode, que ce soit avec file ou files[], je reçois une erreur 422 avec le message :
undefined method `tempfile' for #<String:0x00007fdfeba2b1d8>
Quelqu’un peut-il m’aider ?