我使用 Winston 模块为我的离线应用程序创建了一个每日日志文件。我现在需要能够通过 POST 将该文件发送或上传到远程服务器(该部分已经存在)
我知道我需要分块写入文件,这样它就不会占用内存,所以我使用fs.createReadStream但是我似乎只得到 503 响应,即使只发送示例文本。
编辑
我发现接收器期望数据被命名为“数据”。我已经删除了 createReadSteam,因为我只能让它与 'application/x-www-form-urlencoded' 和同步fs.readFileSync 一起使用。如果我在 php 服务器上将其更改为“multipart/form-data”,我将能够再次使用 createReadStream,或者只有当我更改为物理上传 json 文件时。
在过去的几周里,我只是在学习节点,所以任何指针都会被感激地收到。
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()