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.
Versuchen Sie, die '{HTMLStr}' in 'HTMLStr' zu ändern. – serge1peshcoff
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
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