webentwicklung-frage-antwort-db.com.de

NodeJS: Senden/Hochladen einer lokalen Datei auf einen Remote-Server

Ich habe mit dem Winston-Modul eine tägliche Protokolldatei für meine Offline-App erstellt. Ich muss jetzt in der Lage sein, diese Datei über POST an einen Remote-Server zu senden oder hochzuladen (dieser Teil existiert bereits).

Ich weiß, dass ich die Datei in Blöcken schreiben muss, damit der Speicher nicht beeinträchtigt wird. Daher verwende ich fs.createReadStream aber ich scheine nur eine 503-Antwort zu erhalten, selbst wenn nur Beispieltext gesendet wird.

EDIT

Ich stellte fest, dass der Empfänger erwartete, dass die Daten als "Daten" bezeichnet werden. Ich habe den createReadSteam entfernt, da ich ihn nur mit 'application/x-www-form-urlencoded' und einem synchronen fs.readFileSync zusammenarbeiten konnte. Wenn ich dies auf 'multipart/form-data' auf dem PHP-Server ändere, könnte ich createReadStream erneut verwenden, oder nur, wenn ich die physische Json-Datei physisch hochlade.

Ich habe erst in den letzten paar Wochen Knoten gelernt, so dass alle Hinweise dankbar aufgenommen werden würden.

var http = require('http'),
    fs = require('fs');

var post_options = {
    Host: 'logger.mysite.co.uk',
    path: '/',
    port: 80,
    timeout: 120000,
    method: 'POST',
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
}

var sender = http.request(post_options, function(res) {
    if (res.statusCode < 399) {
        var text = ""
        res.on('data', function(chunk) {
            text += chunk
        })
        res.on('end', function(data) {
            console.log(text)
        })
    } else {
        console.log("ERROR", res.statusCode)
    }
})

var POST_DATA = 'data={['
POST_DATA += fs.readFileSync('./path/file.log').toString().replace(/\,+$/,'')
POST_DATA += ']}'
console.log(POST_DATA)
sender.write(POST_DATA)
sender.end()
15
sidonaldson

kopiert von https://github.com/mikeal/request#forms

var r = request.post('http://service.com/upload', function optionalCallback (err, httpResponse, body) {
  if (err) {
    return console.error('upload failed:', err);
  }
  console.log('Upload successful!  Server responded with:', body);
})
var form = r.form()
form.append('my_field1', 'my_value23_321')
form.append('my_field2', '123123sdas')
form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png')))
9
waqas

Schauen Sie sich das Modul request an.

Sie können damit eine Datei an POST - Anforderungen streamen.

0
swhitewvu24