Eine Lösung, die leicht in Ihr aktuelles Programm ohne zu viel Arbeit passt, ist die Verwendung des Moduls form-data auf npm.
Das Formulardatenmodul vereinfacht mehrteilige Anforderungen im Knoten. Das folgende ist ein einfaches Beispiel für die Verwendung.
var http = require("https");
var FormData = require('form-data');
var fs = require('fs')
var form = new FormData();
form.append('my_field', fs.createReadStream('my_audio.file'));
var options = {
host: 'your.host',
port: 443,
method: 'POST',
// IMPORTANT!
headers: form.getHeaders()
}
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function() {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
// Pipe form to request
form.pipe(req);
In einem "realen" Szenario würden Sie viel mehr Fehlerprüfung durchführen wollen. Außerdem gibt es viele andere http-Clients auf npm, die diesen Prozess ebenfalls vereinfachen (das Anforderungsmodul verwendet Formulardaten BTW). Schauen Sie sich request und got an, wenn Sie interessiert sind.
Für das Senden einer binären Anfrage sind die Grundlagen immer noch die gleichen, req
ist eine writable stream. Als solche können Sie pipe
Daten in den Stream, oder schreiben Sie direkt mit req.write(data)
. Hier ist ein Beispiel.
var http = require('https');
var fs = require('fs');
var options = {
// ...
headers: {
'Content-Type': 'application/octet-stream'
}
}
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function() {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
var audioFile = fs.createReadStream('my_audio.file', { encoding: 'binary' });
audioFile.pipe(req);
Beachten Sie, dass, wenn Sie die write
Methode explizit req.write(data)
verwenden Sie req.end()
nennen müssen. Außerdem können Sie sich die Kodierungsoptionen für Nodes Buffer
(docs) ansehen.
Geben Sie ein reales Beispiel. Gerade jetzt ist es nur ein Kommentar – mplungjan