![](/img/trans.png)
[英]NodeJs Express-Validator customvalidators doesn't work
[英]Request data event on express with nodeJS doesn't work
我正在嘗試使用Express進行一些文件上傳,但是請求數據事件存在問題。 即使我對其進行了一些控制台日志記錄測試,數據事件也不起作用。
這是我的服務器代碼:
var express = require('express');
var fs = require('fs');
var app = express();
//parser
app.use(express.bodyParser());
//form
app.get('/', function (req, res){
res.sendfile(__dirname + "/upload.html");
});
//post
app.post('/', function(req, res){
var imageName = req.files.image.name;
//error
if(!imageName){
console.log("Error");
res.redirect("/");
res.end();
} else {
var file = fs.createWriteStream(__dirname + "/uploads/" + imageName);
var fileSize = req.headers['content-length'];
var uploadedSize = 0;
req.on('data', function (chunk) {
var bufferStore = file.write(chunk);
if(bufferStore == false)
req.pause();
uploadedSize += chunk.length;
uploadProgress = (uploadedSize/fileSize) * 100;
console.log(Math.round(uploadProgress) + "%" + " uploaded\n" );
});
file.on('drain', function() {
req.resume();
});
req.on('end', function() {
console.log('Upload done!');
res.end();
});
}
});
app.listen(5000);
這是我的客戶代碼:
<!DOCTYPE HTML>
<html>
<body>
<form method='post' enctype='multipart/form-data'>
<input type='file' name='image'/>
<input type='submit' /></form>
</body>
</html>
添加此模塊:
var path = require('path');
然后,嘗試以此替換您的發布操作:
app.post('/', function(req, res) {
var uploadDir = __dirname + '/uploads/';
if( !path.existsSync(uploadDir) ){
fs.mkdirSync(uploadDir, 0755);
}
var filename = req.files.image.name;
fs.readFile(req.files.image.path, function (err, data) {
var save_path = uploadDir + filename;
fs.writeFile(save_path, data, function (err) {
if(err){
res.json({
error: 'Error!'
});
} else {
res.json({
success: true
});
}
fs.unlink(req.files.image.path, function (err) {
if (err) throw err;
});
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.