2015-02-17 16 views
9

Tôi có tệp pdf được mã hóa dưới dạng chuỗi base64. Làm cách nào để tải chuỗi này xuống trình duyệt dưới dạng tệp ở định dạng .pdf?Express.js - làm thế nào để tải xuống chuỗi base64 dưới dạng tệp PDF?

Những gì tôi đã cố gắng:

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

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

Thay vì sử dụng một loạt luồng bổ sung, tại sao không chỉ làm 'res.write (fileBase64String, 'base64')'? – mscdex

+0

Vâng, cảm ơn, đã cập nhật câu hỏi :) Tôi có thể thấy trạng thái phản hồi OK ở phía máy khách, nhưng tệp không bao giờ được lưu. – Tomas

+2

Nếu đó là tất cả những gì bạn đang viết, sử dụng 'res.end (fileBase64String, 'base64')', cả hai sẽ ghi dữ liệu và đóng phản hồi. – mscdex

Trả lời

1

tôi đã kết thúc để giải mã các pdf đầu tiên và sau đó gửi nó vào trình duyệt như nhị phân như sau:

(Để đơn giản tôi sử dụng node-http đây nhưng các chức năng có sẵn trong express cũng)

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); 

gì chở tôi hạt đây là thử nghiệm với Postman:
Tôi đã sử dụng Gửi nút thay vì Gửi và TảiButton để gửi yêu cầu: enter image description here

Nhưng sử dụng Gửi nút cho yêu cầu này làm cho tệp pdf bị hỏng sau khi lưu.

Các vấn đề liên quan