2017-07-09 10 views
-1

Versuch an:
1. nehmen eine Zeichenfolge aus dem Anforderungs Körper und erstellen Sie eine Datei (HTML-Datei) mit dieser Zeichenfolge - im Speicher nur-kein Schreiben auf die Festplatte.
2. Senden Sie diese Datei (im Speicher) an die Antwort als Dateidownload.Node/Express: Wie erstelle ich eine Datei aus einem String und streame sie in den Browser?

Bisher habe ich ... das nicht funktioniert:

app.use(bodyParser.urlencoded()); 
const {HTMLStr} = req.body; 
//HTMLStr is name of form field, contains HTML string 

res.set({ 
'Content-Type': 'text/html', 
'Content-Disposition': 'attachment; filename=myname.html' 
}); 

res.send(HTMLStr); 
res.end(); 

ich etwas ähnliches in der Vergangenheit getan haben, wo ich eine eingehende Datei auf die Festplatte schreiben, lesen sie von der Platte über createReadStream und Rohr auf die Antwort - aber noch nie getan, ohne zuerst die Festplatte zu schreiben.

+1

Versuchen Sie, die '{HTMLStr}' in 'HTMLStr' zu ändern. – serge1peshcoff

+0

Sie müssen mehr Code Kontext zeigen, damit wir sehen können, was" req.body "eigentlich ist. Ist das ein POST-Handler? Haben Sie bereits Middleware installiert, die den Body für Sie aus dem eingehenden Stream liest und analysiert? Und enthält dieser Stream JSON mit einem property namens 'HTMLStr'? – jfriend00

+2

Das Senden des eingehenden Streams an einen ausgehenden Stream erfolgt am besten mit '.pipe()', da sowohl eingehende als auch ausgehende Streams sind. Es gibt viele Beispiele mit einer Websuche. Hier ist eine: https://StackOverflow.com/Questions/13472024/Simple-Node-JS-Proxy-By-Piping-http-Server-to-http-request – jfriend00

Antwort

1

Verwenden Sie Sitzungen? Wenn dies der Fall ist, können Sie die Informationen, wenn sie nicht zu groß sind, in der Sitzung speichern und sie dann jederzeit abrufen.

Verwandte Themen