[英]How to save a file on server running Node.js?
我有一台運行Node.js的服務器。 我必須從html頁面(“ index.html”)讀取表單數據,並將該數據寫入txt文件。
這是我的index.html:
<form action="/uploads" method="post">
<table>
<tr>
<td><img src="images/ktulogo.png" width="100" height="100"></td>
<td>
<h3>Karadeniz Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü</h3>
</td>
</tr>
<tr>
<td><br></td>
<td>
<hr>
</td>
</tr>
<tr>
<td>
<h4>Adınız Soyadınız :</h4>
</td>
<td><input type="text" style="margin-left: 5%; width: 40%"></td>
</tr>
<tr>
<td>
<h4>Öğrenci Numaranız :</h4>
</td>
<td><input name="ogrNo" type="text" style="margin-left: 5%; width: 40%"></td>
</tr>
<tr>
<td>
<h4>Cevabınız :</h4>
</td>
<td><textarea name="answer" datatype="text" rows="10" cols="100" style="margin-left: 5%; resize: none"></textarea></td>
</tr>
</table>
</br>
<center>
<button id="saveFile" class="btn btn-success" style="width: 30%">Sisteme Yükle</button>
</center>
</form>
這是我的app.js:
var express = require('express');
var app = express();
var path = require('path');
var fs = require('fs');
app.use(express.static(path.join(__dirname, 'public')));
app.get('/', function(req, res){
res.sendFile(path.join(__dirname, 'views/index.html'));
});
app.post('/uploads', function (req, res) {
var file_name = req.body.ogrNo;
var file_content = req.body.answer;
file_content = file_content.replace(/\n/g, "\r\n");
var stream = fs.createWriteStream(file_name+".txt");
stream.once('open', function () {
stream.write(file_content);
stream.end();
});
});
var server = app.listen(3000, function(){
console.log('Server listening on port 3000');
});
當我運行它時,它引發了一個錯誤:
TypeError:無法在Layer.handle讀取c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ app.js:13:27處未定義的屬性'ogrNo'[作為handle_request](c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ route處的\\ node_modules \\ express \\ lib \\ router \\ layer.js:95:5)(c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ node_modules \\ express \\ lib \\ router \\ route.js:131:13) .dispatch(c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ node_modules \\ express \\ lib \\ router \\ route.js:112:3)[以handle_request](c:\\ Users \\ Volkan \\ IdeaProjects \\ File在c:\\ Users \\ Volkan \\ IdeaProjects \\ File上載\\ node_modules \\ express \\ lib \\ router \\ layer.js:95:5)在Function.process_params處的上載\\ node_modules \\ express \\ lib \\ router \\ index.js:277:22 (c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ node_modules \\ express \\ lib \\ router \\ index.js:330:12)在下一個(c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ node_modules \\ express \\ lib \\在Layer.handle處的serveStatic(c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ node_modules \\ serve-static \\ index.js:75:16)中的router \\ index.js:271:10) e_request](c:\\ Users \\ Volkan \\ IdeaProjects \\ File Upload \\ node_modules \\ express \\ lib \\ router \\ layer.js:95:5)
那么,造成我問題的原因是什么?如何處理此工作?
您必須解析傳入的數據,為此,請使用body解析器
首先安裝
npm i -S body-parser
然后將其導入您的代碼
var bodyParser = require('body-parser')
添加解析器
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// parse application/json
app.use(bodyParser.json());
就這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.