# 文件上传 - 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) ```