J'ai reçu plusieurs fichiers pdf et je dois le télécharger à partir d'une API REST.
Après l'authentification et la connexion, j'essaie de télécharger le fichier avec request-promise:
const optionsStart = {
uri: url,
method: 'GET',
headers: {
'X-TOKEN': authToken,
'Content-type': 'applcation/pdf'
}
}
request(optionsStart)
.then(function(body, data) {
let writeStream = fs.createWriteStream(uuid+'_obj.pdf');
console.log(body)
writeStream.write(body, 'binary');
writeStream.on('finish', () => {
console.log('wrote all data to file');
});
writeStream.end();
})
La demande crée un pdf (environ 1-2 Mo) mais je ne peux pas l'ouvrir. (Mac Preview affiche des pages vierges et Adobe show =>
Une erreur s'est produite lors de l'ouverture de ce document. Un problème est survenu lors de la lecture de ce document (14).
Je n'ai aucune information sur l'API Endpoint où je télécharge les fichiers. Ayez juste cette boucle:
curl -o doc.pdf --header "X-TOKEN: XXXXXX"
http://XXX.XXX/XXX/docs/doc1
Où est mon erreur?
Mettre à jour:
J'ai ouvert le fichier en édition et le fichier ressemble à ça:
Je n'ai aucune expérience avec ça :-)
Ajoutez l'encodage: "binaire" à vos options de demande:
const optionsStart = {
uri: url,
method: "GET",
encoding: "binary", // it also works with encoding: null
headers: {
"Content-type": "application/pdf"
}
};
Ajouter encoding: null
à vos options de demande:
const optionsStart = {
uri: url,
method: "GET",
encoding: null,
headers: {
"Content-type": "application/pdf"
}
};
Ensuite, transformez la réponse en tampon (si nécessaire):
const buffer = Buffer.from(response);
essaye ça
const optionsStart = {
uri: url,
method: 'GET',
headers: {
'X-TOKEN': authToken,
'Content-type': 'applcation/pdf'
},
encodig: null
}
request(optionsStart, (err, resp) => {
let writeStream = fs.createWriteStream(uuid+'_obj.pdf');
writeStream.write(resp.body, 'binary');
writeStream.on('finish', () => {
console.log('wrote all data to file');
});
writeStream.end();
})