web-dev-qa-db-fra.com

NodeJS Request comment envoyer des données multipart / form-data POST request

J'essaie d'envoyer une demande POST à une API avec une image dans la demande. Je le fais avec le module de demande, mais tout ce que j'essaye ne fonctionne pas. Mon code actuel :

const options = {
    method: "POST",
    url: "https://api.LINK.com/file",
    port: 443,
    headers: {
        "Authorization": "Basic " + auth,
        "Content-Type": "multipart/form-data"
    },
    form : {
        "image" : fs.readFileSync("./images/scr1.png")
    }
};

request(options, function (err, res, body) {
    if(err) console.log(err);
    console.log(body);
});

Mais la requête utilise Content-Type: application/x-www-form-urlencoded pour une raison quelconque ... Comment puis-je résoudre ce problème?

9
Paul de Koning

Comme expliqué dans documentation form multipart/form-data la demande utilise form-data bibliothèque. Vous devez donc fournir l'option formData au lieu de l'option form.

const options = {
    method: "POST",
    url: "https://api.LINK.com/file",
    port: 443,
    headers: {
        "Authorization": "Basic " + auth,
        "Content-Type": "multipart/form-data"
    },
    formData : {
        "image" : fs.createReadStream("./images/scr1.png")
    }
};

request(options, function (err, res, body) {
    if(err) console.log(err);
    console.log(body);
});
8
Ivan Vasiljevic