NodeJS: versenden/hochladen einer lokalen Datei zu einem remote-server

Habe ich die Winston-Modul zum erstellen einer täglichen Protokolldatei für mein offline-app. Ich brauche jetzt in der Lage sein zu senden oder hochzuladen, die Datei zu einem remote-server via POST (Teil schon vorhanden)

Ich weiß, ich muss zum schreiben der Datei in Blöcken, so dass es nicht hog die Speicher, so bin ich mit fs.createReadStream jedoch habe ich anscheinend nur eine 503-Antwort, selbst wenn das senden nur text.

BEARBEITEN

Arbeitete ich heraus, dass der Empfänger erwarten, dass die Daten mit dem Namen 'Daten'. Ich habe entfernt die createReadSteam wie konnte ich nur, dass es funktioniert mit 'application/x-www-form-urlencoded' und eine synchrone fs.readFileSync. Wenn ich ändern Sie diese auf "multipart/form-data' auf dem php-server würde ich in der Lage sein zu verwenden createReadStream wieder, oder ist das nur wenn ich körperlich hochladen der json-Datei.

Ich habe nur lernen Knoten für die letzten paar Wochen, also alle Zeiger wäre dankbar angenommen.

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()
Haben Sie versucht, eine Datei hochladen, mit so etwas wie curl um sicherzustellen, dass der remote-server akzeptiert tatsächlich die Daten? Sie haben möglicherweise Probleme mit der application/json Inhalte geben. Außerdem ist das logfile tatsächlich im JSON-format?
Möglicherweise haben Sie einen Punkt hier. Gibt es einen Unterschied zwischen hochladen einer json-Datei oder öffnen Sie eine json-Datei und versenden als POST-Daten-chunks (nicht tatsächlich senden der Datei)
Wenn Sie senden Sie es mit application/json als Content-Type ist, kann die Datei nicht bekommen, behandelt, als ein "normaler" laden. Wenn Sie möchten, eine regelmäßige hochladen, sollten Sie erwägen, entweder request oder zumindest form-data, weil Datei-uploads sind nicht trivial zu implementieren.
Ist das eigentlich das, was der server erwartet? Es sieht ziemlich komisch.
503 der server ist nicht verfügbar - ist der server down? checkupdown.com/status/E503.html

InformationsquelleAutor sidonaldson | 2013-11-06

Schreibe einen Kommentar