2015-02-17 17 views
9

Mam plik pdf zakodowany jako ciąg base64. Jak pobrać ten ciąg do przeglądarki jako plik w formacie .pdf?Express.js - jak pobrać ciąg base64 jako plik PDF?

Co Próbowałem już:

res.set('Content-Disposition', 'attachment; filename="filename.pdf"'); 
res.set('Content-Type', 'application/pdf'); 

res.write(fileBase64String, 'base64'); 
+0

Zamiast używać wielu dodatkowych strumieni, dlaczego nie po prostu zrobić 'res.write (fileBase64String, 'base64')'? – mscdex

+0

Tak, dzięki, zaktualizowałem pytanie :) Mogę zobaczyć status odpowiedzi OK po stronie klienta, ale plik nigdy nie jest zapisywany. – Tomas

+2

Jeśli to wszystko, co piszesz, użyj 'res.end (fileBase64String, 'base64')', co spowoduje zapisanie danych i zamknięcie odpowiedzi. – mscdex

Odpowiedz

1

skończyło się zdekodować pdf, a następnie wysłać go do przeglądarki jako binarne następująco:

(Dla uproszczenia używam node-http tutaj, ale funkcje są dostępne w express jak dobrze)

const http = require('http'); 

http.createServer(function (req, res) { 
    getEncodedPDF(function (encodedPDF) { 
    res.writeHead(200, { 
     'Content-Type': 'application/pdf', 
     'Content-Disposition': 'attachment; filename="filename.pdf" 
    }); 

    const download = Buffer.from(encodedPDF.toString('utf-8'), 'base64'); 

    res.end(download); 
    }); 
}).listen(1337); 

Co zawiózł mnie orzechy tutaj było badanie z Postman:
używałem Wyślij przycisk zamiast wysyłać i PobierzButton złożyć wniosek: enter image description here

Ale używając Wyślij przycisk dla tego żądania powoduje to, że plik pdf zostaje uszkodzony po zapisaniu.