Ich benutze pdfkit (https://github.com/devongovett/pdfkit) auf meinem Knoten-Server, in der Regel erstellen PDF-Dateien, und dann auf s3 hochladen. Das Problem ist, dass pdfkit Beispiele Pipe doc in einen Knoten schreiben Stream, der die Datei auf die Festplatte schreibt, folgte ich dem Beispiel und funktionierte korrekt, aber meine Anforderung ist jetzt, die PDF-Dokument zu einem Speicher-Stream statt speichern es auf der Festplatte (ich lade sowieso auf s3 hoch). Ich habe einige Node-Speicher-Streams-Prozeduren gefolgt, aber keiner von ihnen scheint mit PDF-Pipe mit mir zu arbeiten, ich könnte nur Strings in Speicher-Streams schreiben. Also meine Frage ist: Wie die PDF-Kit-Ausgabe zu einem Speicher-Stream (oder etwas Ähnliches) pipes und dann lesen Sie es als ein Objekt auf s3 hochladen?Knoten js, Rohrleitung pdfkit zu einem Speicherstream
var fsStream = fs.createWriteStream(outputPath + fileName);
doc.pipe(fsStream);
Vielen Dank im Voraus.
Ich habe das versucht, aber ich habe keine Erfahrung mit dem Beenden von Pipes oder Beenden der Verwendung von 'Anfrage' , so endete ich mit diesem Fehler: ' [grunt-develop]> events.js: 141 throw er ; // Nicht behandelte 'Fehler' Ereignis ^ Fehler: lesen ECONNRESET bei exports._errnoException (util.js: 856: 11) bei TLSWrap.onread (net.js: 544: 26) >> Anwendung mit Code verlassen 1 ' –
Wenn ein lesbarer Stream (hier, 'doc') endet, wird automatisch der beschreibbare Stream, an den er weitergeleitet wurde (' upload'), der beendet wurde, angezeigt. Wenn Sie wissen möchten, wann der Schreibvorgang (Upload) abgeschlossen ist, warten Sie auf das ['Finish'-Ereignis] (https://nodejs.org/api/stream.html#stream_event_finish). – josh3736
Und dieser Stack-Trace zeigt an, dass Sie nicht auf "Fehler" -Ereignisse auf etwas warten, das unterbrochen wird. Fügen Sie 'error'-Listener hinzu, damit Sie genau bestimmen können, was unterbrochen wird. Wenn es deine 'Upload'-Anfrage ist, ist das ziemlich seltsam. – josh3736