# 文件上传
- body-parser 并不技术文件上传,所以这里要用到另一个第三方模块 multer
- 安装 multer `npm install multer`
- 使用前先定义上传的路径
## 单文件上传
```javascript
//引入express模块
var express = require('express');
//引入multer模块
var multer = require ('multer');
var path = require('path') ;
//设置上传的目录,
var upload = multer({ dest: path.join(__dirname,'temp')});
var app = express();
app.use(express.static(path.join(__dirname, '/')));
app.post('/singleUpload', upload.single('avatar'), function (req, res, next) {
console.log(req.file);
console.log(req.body);
res.end("上传成功");
});
app.listen(88)
```
```html
```
## 多文件上传
```javascript
//注意上传界面中的 中的name必须是下面代码中指定的名
app.post('/mulUpload', upload.array('photos', 12), function (req, res, next) {
console.log(req.files);
console.log(req.body);
res.end(req.file + "
" + req.body);
})
```
### 原生js
```html
```
### jquery
```html
Document
```
## 全局本地存储
```javascript
//引入express模块
var express = require('express');
//引入multer模块
var multer = require ('multer');
var path = require('path') ;
var fs = require('fs');
//设置上传的目录,
// var upload = multer({ dest: path.join(__dirname,'temp')});
var storage = multer.diskStorage({
destination: function (req, file, cb) {
var _path = path.join(__dirname, "../uploadFile");
if(!fs.existsSync(_path)){
fs.mkdirSync(_path);
}
cb(null, _path); // 保存的路径,备注:需要自己创建
},
filename: function (req, file, cb) {
// 将保存文件名设置为 字段名 + 时间戳,比如 logo-1478521468943
cb(null, file.originalname);
}
});
// // 通过 storage 选项来对 上传行为 进行定制化
var upload = multer({ storage: storage })
var app = express();
app.use(express.static(path.join(__dirname, '/')));
app.post('/singleUpload', upload.single('photos'), function (req, res, next) {
console.log(req.file);
console.log(req.body);
res.end("上传成功");
});
app.post('/mulUpload', upload.array('photos', 12), function (req, res, next) {
console.log(req.files);
console.log(req.body);
res.end("上传成功");
})
app.listen(88)
```