Sendgrid-nodejs: PDF codificado em Base64 como anexo

Criado em 15 abr. 2016  ·  4Comentários  ·  Fonte: sendgrid/sendgrid-nodejs

Tenho um arquivo PDF codificado em base64 e desejo anexá-lo a um e-mail. Quando eu o anexo com o seguinte código, o e-mail enviado contém um PDF corrompido anexado:

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

Comentários muito úteis

Você terá adicionado uma string base64 como um anexo com o código acima, o que significa que você precisará salvar o anexo e decodificá-lo na outra extremidade. Acho que você realmente queria fazer isso:

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

Todos 4 comentários

Você terá adicionado uma string base64 como um anexo com o código acima, o que significa que você precisará salvar o anexo e decodificá-lo na outra extremidade. Acho que você realmente queria fazer isso:

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

@deaks-kt, obrigado por sua contribuição!

@danielflippance isso resolveu seu problema?

Obrigado pela informação. Essa solução dobraria a quantidade de memória que está sendo usada? IE: eu agora teria uma string base64 e um buffer contendo as mesmas informações. Nesse caso, isso aumentaria significativamente o uso de memória em nossos servidores, já que os PDFs são muito grandes, portanto, não seria apropriado em nosso caso. Vou verificar se podemos recuperar um buffer antes de renderizar em base64.

Suspeito que será quase o dobro. Você obtém 3 bytes para cada 4 de Base64, o que é uma redução de 25%, mas espero que haja alguma sobrecarga para o Array. Se você estiver realmente travado e precisar usar base64, recomendo investigar a solicitação pull # 219 e consultar https://github.com/form-data/form-data (que é o que esta biblioteca está usando por meio da solicitação) para ver se você pode transmitir a decodificação de base64 ou talvez até mesmo especificar que os dados do formulário já estão codificados durante no form.append

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

metalshan picture metalshan  ·  3Comentários

thinkingserious picture thinkingserious  ·  4Comentários

umarhussain15 picture umarhussain15  ·  3Comentários

thidasapankaja picture thidasapankaja  ·  4Comentários

egges picture egges  ·  3Comentários