multer实现文件上传

express利用multer中间件进行文件上传

因为小项目要用到上传文件功能,所以上网找到multer中间件实现该功能

1.第一步当然是安装multer

1
$ npm install multer

2.第二步配置中间件

1
$ vim app.js

1
2
3
4
5
6
7
8
9
//...
var express = require('express')
var multer = require('multer')
var app = express()
app.use(multer({
dest: './uploads/'
}).single('file'));
//...

3.添加form

xx.html

1
2
3
4
5
6
7
8
9
10
<form action="/" method="post" enctype='multipart/form-data'>
<table align="center">
<tr>
<td>myfile:</td>
<td>
<input type="file" name="file">
</td>
</tr>
</table>
</form>

4.配置路由

routes/xx.js

1
2
3
router.post('/script/addFile',function(req,res,next){
console.log('file',req.file)
});

~~进阶
读取上传文件内容并写入数据库(这里直接读取内容写入数据库,其实思路应该记录路径用到的时候再读取,为研究到,有时间再研究)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
pool.getConnection(function(err, connection) {
var script;
var id = req.query.id;
fs.readFile(req.file.path, function (err, data) {
if (err) {
return console.error(err);
}
script = data.toString();
connection.query($sql.script.updateScript, [script,id], function(err, result) {
if(result) {
result = {
code: 200,
success:true
};
}
// 以json形式,把操作结果返回给前台页面
jsonWrite(res, result);
// 释放连接
connection.release();
});
});
});

$sql.script.updateScript

1
2
3
script:{
updateScript:'update script set script=? where id=?'
}

PS:这样直接写sql语句操作数据库太不友好了,应该用orm(Object relational mapper),google了下决定用sequelize。下一个blog就它了~~