私は非常に大量のjsonデータをアップロードするajax(jquery)ポストを行っています。大量のデータを投稿する場合、データは一般にチャンクに分割されます。だから私たちはポストデータ要求を聞いて、アップロードデータのフルバッファを構築しなければなりません。このような何か:nodejs/expressに大量のjsonデータ(ファイルではない)を投稿する方法
function display_form(req, res) {
res.sendHeader(200, {"Content-Type": "text/html"});
res.write(
'<form action="/upload" method="post" enctype="multipart/form-data">'+
'<input type="file" name="upload-file">'+
'<input type="submit" value="Upload">'+
'</form>'
);
res.close();
}
しかし、私は(動的である)JSONデータをアップロードする必要があります。
req.on('data', function(chunk) {
console.log("upload on data "+ chunk.length);
chunks.push(chunk);
total+= chunk.length;
});
req.on('error', function(e) {
console.log('Got Error ' + e.message);
});
req.on('end', function() {
var buf = new Buffer(total)
cur = 0;
for (var i = 0, l = chunks.length; i < l; i++) {
chunks[i].copy(buf, cur, 0);
cur += chunks[i].length;
}
var level = 1;
var path = "level"+level+".json";
writeToFile(buf,path);
res.send("Update successfull as level "+level);
});
これは、私は、フォームを使用してファイルをアップロードしていた場合に動作しているようです。私はこのようにしています:
$.ajax({
type: "POST",
url: "/upload",
data: {"data": JSON.stringify(gamePack)},
success: cb,
});
次に、req 'data'または 'end'にコールバックがないようです。では、ファイルのアップロードとデータのアップロードとはどのように異なるのですか?
はあなたがreq.body' 'で見たことがありますか? 'data'と' end'はデータのストリームのためのものです。 'req.body'これは私の問題を解決しているようだ – Raynos