Sendgrid-nodejs: PDF encodé en Base64 en pièce jointe

Créé le 15 avr. 2016  ·  4Commentaires  ·  Source: sendgrid/sendgrid-nodejs

J'ai un fichier PDF encodé en base64 et je souhaite le joindre à un e-mail. Lorsque je l'attache avec le code suivant, l'e-mail envoyé contient un PDF corrompu en pièce jointe :

email.addFile({
    filename: 'my-file.pdf',
    content: aBase64EncodedPDF,
    contentType: 'application/pdf',
}); 

Commentaire le plus utile

Vous aurez ajouté une chaîne base64 en pièce jointe avec le code ci-dessus, ce qui signifie que vous devrez enregistrer la pièce jointe et la décoder à l'autre extrémité. Je pense que vous avez peut-être vraiment voulu faire ceci:

email.addFile({
    filename: 'my-file.pdf',
    content: new Buffer(aBase64EncodedPDF, 'base64'),
    contentType: 'application/pdf',
}); 

Tous les 4 commentaires

Vous aurez ajouté une chaîne base64 en pièce jointe avec le code ci-dessus, ce qui signifie que vous devrez enregistrer la pièce jointe et la décoder à l'autre extrémité. Je pense que vous avez peut-être vraiment voulu faire ceci:

email.addFile({
    filename: 'my-file.pdf',
    content: new Buffer(aBase64EncodedPDF, 'base64'),
    contentType: 'application/pdf',
}); 

@deaks-kt merci pour votre contribution !

@danielflippance est-ce que cela a résolu votre problème ?

Merci pour l'info. Cette solution doublerait-elle la quantité de mémoire utilisée ? IE : J'aurais maintenant une chaîne en base64 et un tampon contenant les mêmes informations. Si c'est le cas, cela augmenterait considérablement l'utilisation de la mémoire sur nos serveurs car les fichiers PDF sont assez volumineux, ce ne serait donc pas approprié dans notre cas. Je vais voir si nous pouvons récupérer un tampon avant le rendu en base64.

Je pense que ce sera près du double. Vous obtenez 3 octets pour chaque 4 de Base64, ce qui représente une réduction de 25%, mais je m'attends à ce qu'il y ait une surcharge pour le tableau. Si vous êtes vraiment bloqué et que vous devez utiliser la base64, je vous recommande d'enquêter sur la pull request #219 et de consulter https://github.com/form-data/form-data (c'est ce que cette bibliothèque utilise via la demande) pour voir si vous pouvez diffuser le décodage base64 ou peut-être même spécifier que les données du formulaire sont déjà encodées pendant le formulaire.append

Cette page vous a été utile?
0 / 5 - 0 notes