我将数据从浏览器传递到我的Node.js应用,并使用以下代码将数据写入文件:
index.html
<style>
iframe{display:none;}
</style>
<form method="post" target="iframe">
<textarea name="my_textarea">Some code with tags e.g. <p>text</p></textarea>
</form>
<button>SEND</button>
<iframe name="iframe"></iframe>
<script>
document.getElementsByTagName('button')[0].addEventListener('click', function() {
document.getElementsByTagName('form')[0].submit();
});
</script>
Node.js应用
var http = require('http'),
fs = require('fs'),
querystring = require('querystring');
http.createServer(function(req, res) {
fs.readFile(__dirname+'/index.html', function(err, indexPage) {
if(!err) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(indexPage);
}
});
if(req.method == 'POST') {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function () {
var post = querystring.parse(body);
if(post['my_textarea']) {
var anotherPage = post['my_textarea'];
fs.writeFile(__dirname+'/another.html', anotherPage, function(err) {
if(err) {
return console.log(err);
}
});
}
});
}
}).listen(80, 'localhost');
经过测试,我发现此类请求的通过量不超过544 000个字符
是否可以在某个地方或以某种方式指定我自己的限制以及如何指定?
我知道Express like之类的可能性
app.use(express.bodyParser({limit: '50mb'}));
但是我对没有Express的情况感兴趣
ps。我在本地计算机上发送了自己的发帖请求,据我了解,我不需要
...
body += data;
if(body.length > 1e6) {
request.connection.destroy();
}
...
但是如果我仍然需要它,请解释原因
答案 0 :(得分:0)
也许是这样,但是我认为这是1 Mb。
1e6 === 1 * Math.pow(10, 6) === 1 * 1000000 ~~~ 1MB
req.on('data', function (data) {
body += data;
if (body.length > 1e6)
req.connection.destroy();
});