Tôi đang sử dụng pdfkit (https://github.com/devongovett/pdfkit) trên máy chủ nút của mình, thường tạo tệp pdf và sau đó tải chúng lên s3. Vấn đề là các ví dụ pdfkit gửi tài liệu pdf vào một dòng ghi nút, ghi tệp vào đĩa, tôi đã làm theo ví dụ và hoạt động chính xác, tuy nhiên yêu cầu của tôi bây giờ là đưa tài liệu pdf vào luồng bộ nhớ thay vì lưu nó trên đĩa (tôi đang tải lên s3 anyway). Tôi đã làm theo một số quy trình luồng bộ nhớ của nút nhưng không ai trong số họ dường như làm việc với đường ống pdf với tôi, tôi chỉ có thể viết chuỗi vào luồng bộ nhớ. Vì vậy, câu hỏi của tôi là: Làm thế nào để ống đầu ra bộ pdf vào một dòng bộ nhớ (hoặc một cái gì đó giống nhau) và sau đó đọc nó như là một đối tượng để tải lên s3?Nút js, đường ống pdfkit vào luồng bộ nhớ
var fsStream = fs.createWriteStream(outputPath + fileName);
doc.pipe(fsStream);
Cảm ơn trước.
Tôi đã thử điều này, nhưng dường như tôi không có kinh nghiệm về việc kết thúc đường ống hoặc kết thúc việc sử dụng 'yêu cầu ' vì vậy tôi đã gặp lỗi này: ' [grunt-develop]> events.js: 141 throw er ; // Unhandled 'lỗi' sự kiện ^ Lỗi: đọc ECONNRESET tại exports._errnoException (util.js: 856: 11) tại TLSWrap.onread (net.js: 544: 26) >> ứng dụng thoát với mã 1' –
Khi một dòng có thể đọc được (ở đây, 'doc') kết thúc, nó sẽ tự động cho luồng ghi được nó được gửi đến (' upload') mà nó đã kết thúc. Nếu bạn muốn biết khi nào việc ghi (upload) được thực hiện, hãy lắng nghe sự kiện ['finish'] (https://nodejs.org/api/stream.html#stream_event_finish). – josh3736
Và dấu vết ngăn xếp đó cho biết bạn không nghe các sự kiện 'lỗi' trên thứ gì đó đang bị ngắt kết nối. Thêm các trình lắng nghe 'error' để bạn có thể xác định chính xác những gì đang bị ngắt kết nối. Nếu đó là yêu cầu 'upload' của bạn, điều đó khá lạ. – josh3736