如何在nodejs / express中发布大量的json数据(不是文件)
所以我正在做一个Ajax(jQuery)的post,上传相当数量的JSON数据。 发布大量数据时,数据通常会被分成大块。 所以我们必须监听发布的数据请求,并构build完整的上传数据缓冲区。 像这样的东西:
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); });
这似乎是工作,如果我上传一个文件的forms:
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数据(这是dynamic的)。 我正在这样做:
$.ajax({ type: "POST", url: "/upload", data: {"data": JSON.stringify(gamePack)}, success: cb, });
那么似乎没有要求'数据'或'结束'的callback。 那么如何上传不同于发布数据的文件呢?
这似乎解决了我的问题:
$.ajax({ type: "POST", dataType: 'json', url: "/upload", contentType:"application/jsonrequest", data: JSON.stringify(gamePack), success: cb, });
通过XMLHttpRequest
(这是jQuery从内部使用的) POST
'数据不是stream。 整个项目将被发送到服务器,然后处理程序将触发,内容已经加载( req.body
)。 如果你想把它发送出去,那么你将不得不自己实现这个。 例如,通过使用HTML5 FileSystem API读取文件,自己将它们块化,并使用websocket将分块的数据写入服务器。 我在socketio-upload中做了这样的事情,所以你可能想看看。
- Node.js https pem错误:错误:0906D06C:PEM例程:PEM_read_bio:无起始行
- 为什么expression'sendFile函数将304视为错误?
- expressjs – 无法将我的手写笔样式表加载到jade html页面
- node.js + express + threads_a_gogo阻止请求
- 快速js(nodejs)如何启动应用程序? TypeError:app.set不是一个函数
- Express + PassportJs:为什么我们需要在passport策略中用process.nextTick()延迟执行方法?
- Multer不接受数组格式的文件会导致“Unexpected File Error”
- 快递:如何不断地将数据从控制器传递到视图
- mongoose和restify – 返回json之前本地化string