Express - Retour des données binaires à partir lointain webservice
J'essaie de renvoyer des données binaires avec Express. Dans l'exemple, c'est un PDF, mais sur le papier, cela peut être n'importe quelle sorte de fichier.
Mais se concentrer sur le pdf pour le moment. J'ai écrit ce code :
app.get('*', function (req, res) {
getBinaryData(req.url,
function (answer) {
res.type('pdf');
res.end(new Buffer(answer, 'binary'));
},
function (error) {
res.setHeader('Content-Type', 'text/plain');
return res.end(error);
}
);
});
Basé sur ce que j'ai vu ici : https://github.com/strongloop/express/issues/1555
Mais, j'obtiens un fichier pdf avec le bon nombre de pages, à droite du titre.... mais toutes les pages sont vides
Je suis sûr que préoccupante le retour de getBinaryData(), parce que cette fonction demande un Service Web externe et quand j'ai demandé directement à ce service, j'ai eu le droit de document.
Je vous remercie d'avance pour vos réponses
Pourquoi ne pas utiliser
cause je n'ai pas le fichier : - je obtenir ce contenu binaire à partir d'un autre WebService. Finalement, je peux créer un fichier temporaire et l'utilisation de sendFile...
res.sendFile
méthode?cause je n'ai pas le fichier : - je obtenir ce contenu binaire à partir d'un autre WebService. Finalement, je peux créer un fichier temporaire et l'utilisation de sendFile...
OriginalL'auteur Varkal | 2015-05-13
Vous devez vous connecter pour publier un commentaire.
Voici ma légèrement nettoyé version de comment retourner des fichiers binaires avec Express. Je suppose que les données sont dans un objet qui peut être déclarée comme binaire et a une longueur:
res.end(new Buffer(data), 'binary')
gardez à l'esprit que les nouvelles de la mémoire Tampon() est obsolète et elle ont des problèmes de sécurité.
OriginalL'auteur Michael Shopsin
J'ai trouvé une solution plus simple :
Pipes, il l'original de la réponse de la lointaine Service Web directement à ma réponse! J'ai obtenu le fichier correct quel que soit le type de fichier.
Merci homme fonctionne bien 🙂
Dans quelle bibliothèque ne demande lib résident pour la requête(req.l'url).pipe(res)?
Je suppose que c'est ceci: npmjs.com/package/request
OriginalL'auteur Varkal