[multer文档](https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md)
~~~
//引入这个中间件实现文件上传
const multer = require('multer');
~~~
~~~
//file.html
<form action="http://localhost:8080/" method="post" enctype="multipart/form-data">
文件:<input type="file" name="file"/><br>
<input type="submit" value="上传">
</form>
~~~
~~~
//file.js
const express = require("express");
const bodyParser = require('body-parser');
const multer = require('multer');
const fs = require('fs');
const pathLib= require('path');
//讲文件放在这个路径
var objMulter = multer({dest:'./www/assets/'});
const server = express();
// server.use(bodyParser.urlencoded({extended:false}))
server.use(objMulter.any());
server.post('/',function(req,res){
var newName = req.files[0].path+pathLib.extname(req.files[0].originalname);
fs.rename(req.files[0].path,newName,function(err){
if(err){
res.send("上传失败")
}else{
res.send('成功')
}
})
/* 1.获取原始的扩展名
2.重命名
*/
})
server.listen(8080);
~~~
## 1.body-parser和multer的区别
~~~
body-parser 解析post的数据
multer 解析post文件
~~~
- body-parser
~~~
//表单的enctype值为以下的值,则用body-parser解析
<form action="" method="post"
enctype="application/x-www-form-urlencoded"></form>
//使用
server.use(bodyParser.urlencode({extended:false}));
//req.body读取数据
~~~
- multer
~~~
//表单的enctype值为以下的值,则用multer解析
<form action="" method="post"
enctype="multipart/form-data"></form>
const pathLib = require('path');
//multer使用相对复杂
1.生成一个multerObj指定文件存放的地址
var multerObj = multer({dest:"./www/static"})
2.指定上传的文件类型
server.use(multerObj.any());
3.req.files读取数据
server.use(function(req,res){}
req.files[0].originalname //原始的文件名
req.files[0].path //文件路径
//4.把文件扩展名加上
var newName = req.files[0].path+pathLib.extname(req.files[0].originalname);
//5.更改文件名
fs.rename(req.files[0].path,newName,function(err){
if(err){
res.send("上传失败")
}else{
res.send('成功')
}
})
)
~~~
- 0.简介
- 0-1 应用场景
- 0-2 特点
- 0-3 目的
- 1.node
- 第一章 基础语法
- 1-0 开发环境
- 1-1 简单的请求响应
- 1-1-1 http
- 1-2 fs文件模块
- 1-3 事件循环
- 1-3-1 extends
- 1-3-2 给事件处理程序传参
- 1-3-3 once
- 1-3-4 removeEventListener
- 1-4 stream
- 1-5 global全局变量
- 1-6 process
- 1-7 debugger
- 1-8 querystring
- 1-9 url
- 1-9-1 实现一个简单的表单
- 第二章 common-JS
- 1-1 requier规则
- 1-2 exports
- 第三章 基础api
- 3-1 path
- 3-1-1 path
- 3-2 fs
- 3-2 serve-fs实现
- 3-3 http-get
- 3-3-1 http-url
- 3-4 http-post
- 3-4-1
- 第四章 进阶
- 4-1 自定义模块
- 第五章 ESlint
- 5-1 配置
- 第六章 handlebarjs
- 2.koa
- 第一章 起步
- 第二章 路由
- 第1节 get传值及获取
- 第2节 动态路由
- 3.异常
- 4.express
- 第一章 入门安装环境配置
- 1-1 hello world
- 1-2 向前台发送json
- 1-3 use,get,post
- 1-4 express.static
- 1-5 login功能
- 第二章 api
- 2-1 post数据解析
- 2-2 next链式操作
- 2-3 cookie
- 2-3-1 发送签名的cookie
- 2-3-1 读取签名的cookie
- 2-4 session
- 2-4-1 总结
- 第三章 jade
- 3-1 安装
- 3-2 使用
- 3-3 基础语法
- 3-4 进阶
- 3-4-1 模板中使用变量
- 3-4-2 -识别变量
- 3-4-3 for循环
- 3-4-4 if
- 3-4-5 !=原样输出html
- 3-4-6 case-when
- 3-4-7 html模板
- 第四章esj
- 4-1基本语法
- 4-2 进阶
- 第五章 项目整合
- 5-1 文件上传
- 5-2 解析get,post
- 5-3 consolidate
- 5-4 router路由
- 第六章 中间件
- 6-1 跨域
- 5.MySQL
- 5-1 基本
- 5-1-1 数据类型的分类
- 5-2 node操作mysql
- 5-2-1 node查询数据库
- 5-3 基本语法
- 5-3-1 增删改查WHERE
- 5-3-2 ORDER排序
- 5-3-3 GROUP 聚类
- 1-1 DEMO
- 5-3-4 LIMIT-分页
- 6.blog实现
- 6-0 数据字典的设计
- 6-1 读取banner_talbe
- 7.教育网站
- 7-1 server.js模板
- linux命令
- 8.egg.js
- 8-1 起步