Questa domanda è stata posta varie volte, ma nessuna delle soluzioni finora proposte funziona per me.
Sto usando Node.js per caricare immagini per un post tramite l’API.
Posso creare post senza problemi, ma le immagini non vengono caricate.
Convertò l’immagine (un file PNG) in una stringa binaria.
Poi invio una richiesta application/json con le credenziali dell’API nell’intestazione e un payload come questo:
{
type: "composer",
synchronous: true,
file: `${binary_string}`
}
Ho provato sia file come nome del campo per il file, come indicano le documentazioni API, sia files[], come suggerito in un altro post sul Forum.
Usando file, ottengo un errore 422 con:
undefined method `tempfile' for #<String:0x00007fdfeba2b1d8>
Usando files[], ottengo un errore 422 con “Unprocessable Entity”.
Oltre a application/json, come indicato nelle documentazioni, ho anche provato multipart/form-data, come fa l’interfaccia web e come ha fatto questo utente.
Per il post con form-data, l’ho fatto così:
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(),
}) // le credenziali vengono aggiunte
Con questo metodo, sia con file che con files[], ottengo un errore 422 con il messaggio:
undefined method `tempfile' for #<String:0x00007fdfeba2b1d8>
Qualcuno può aiutarmi?