multer模块和SMS处理上传文件
multer模块的使用
1.1Why use it
fs内置模块虽然可以对文件进行读取和写入,但往往是本地的操作如果是传递给服务器的我呢见,我们会使用multer模块来处理‘
1.2安装
控制台输入npm install multer
1.3使用
const express = require('express')
//导入multer
const multer = require('multer')
//初始化上传信息
//通过dest指定要将上传的文件存到什么地方
const upload = multer({ dest: 'uploads/' })
const app = express()
app.post('/profile', upload.single('avatar'), function (req, res, next) {
//upload.single('avatar') 这个是图片数据的key
//req.file 是 `avatar` 文件的信息
//req.body 将具有文本域数据,如果存在的话
})
1.4注意事项
1.multer会将服务器的文件保存到指定的目录,并且会为其取一个不会重复的文件名,可以通过req.file.filename获取该文件名
2.这个文件名不包含后缀名
3.multer设置的upload路径的设置是从项目文件开始的,不需要../回到上一级,可以直接设置项目文件的对应位置.
4.拓展:静态托管的页面不需要输入像文件夹的名字再/index.html,再托管之后直接通过index.html就可以打开
5.sms-新增数据
//新增数据模块图片数据的实现--sms处理数据
module.exports.add = (req, res) => {
//1. 取出浏览器通过post传递过来的数据.
const stu = req.body;
//2. 同时,接收浏览器传递过来的头像.
//2.2 multer模块
// 修改上传到服务器的文件的后缀名.
// 先取到文件本身的名字.
const oldName = path.join(__dirname, '../public/upload',req.file.filename);
// 取到文件本身的后缀名
const arr = req.file.originalname.split('.');
const hzm = arr[arr.length-1];
const newName = oldName + '.' + hzm;
// 改名字.
fs.rename(oldName, newName, err=>{
if(err) res.status(500).send({code:500, msg:'服务器内部发生错误'});
});
//指定数据库中avator的值是文件的名字
stu.avator = req.file.filename + '.' + hzm;
6.sms-修改上传文件
const fs = require('fs');
const path = require('path');
const oldName = path.join(__dirname,'data/1.txt');
const newName = path.join(__dirname,'data/2.txt');
fs.rename(oldName, newName, err=>{
if(err) return console.log(err);
console.log('修改成功');
});
1.5路径参数
普通的传参方式
1. URL后面跟1个问号 ?id=10
- 通过`req.query`拿到
2. POST传递的数据
- 通过`req.body`拿到
3. 文件数据
- 通过`multer`中间件接收
路径参数
eg:http://127.0.0.1/api/student/delete/1
http://127.0.0.1/api/student/delete/2
书写格式和参数获取
app.delete('api/student/delete/:id', (req, res) => {
req.params.id//取到路径参数id,
})
前面部分必须要和路由一样,冒号的部分必须要有,但是是什么不重要。据此我们在逻辑处理模块的时候可以不用判断传过来的id

浙公网安备 33010602011771号