我们记忆究竟是什么?
人类的大脑由神经细胞组成,包括神经元和胶质细胞。 神经元会发出长长的突起, 像树枝一样的伸展开来,叫作树突; 另一些像长长的电缆伸到很远的地方叫作轴突。 这些突起与其他神经元的突起连在一起,组成了一个网络,就像一座城市一样, 这个网络越大,所掌握的知识也越多 。我们把这个网络就叫作 "神经回路"。 大脑每当学到新的知识就会有一个新的突触形成 ,随着不断地复习这些突触得到强化,变成长久记忆。 相反,如果学习之后没有再复习,那么刚形成的突触就会减弱甚至消失 。 其实"新神经回路的形成"就是大脑记忆的过程。
multer本地存储文件
just do it now!! 💐
前端上传文件
前端会通过formdata的形式将文件传给后端
HTML
<form method='POST' action='http://127.0.0.1/upload/avatar' enctype='multiple/formdata'>
<input type='file' name ='file'>
<input type='submit' value='submit'>
<form>
后端
解析后端传来的文件可以借助multer中间件来解决
安装准备
shell
npm i multer
npm i express
coding
创建服务
js
// app.js
const express = require('express');
const http = require('http');
const app = express();
const config = {
port:3008,
root:process.cwd(),
host:'http://127.0.0.1'
}
http.createServer(app).listen(config.port,function(){
const {host,port} = config;
console.log(`服务已启动,请访问${host}:${port} 端口${port}`)
})
js
// app.js 添加路由
//...
app.post('/upload/:classify',function(req,res,next){
res.send(200,{
success:true,
msg:'文件上传成功'
})
})
//...
使用multer
有两个选项可用,destination
和 filename
。他们都是用来确定文件存储位置的函数。
js
// app.js文件里继续增加代码
//...
const path = require('path')
const multer = require('multer');
// ...
const storage = multer.diskStorage({
destination:(req,file,cb)=>{
// 磁盘存储位置
const classify = req.params['classify'];
const localDir= path.join(config.root,`./upload/${classify}`);
// cb(this指向,存储位置文件夹)
cb(null,localDir)
},
filename:(req,file,cb)=>{
// 文件存储名称
// 从file对象中拿到名称,再解析出 name(文件名)和 ext(扩展名)
const {name,ext} = path.parse(file.originalname);
//cb(this指向, 文件名称)
cb(null,name+ext)
}
})
🥑 动态创建存储位置,在destination里面拼接处路径即可(不存在创建即可)
消费multer
multer(opts)
Key | Description |
---|---|
dest or storage |
在哪里存储文件 |
fileFilter |
文件过滤器,控制哪些文件可以被接受 |
limits |
限制上传的数据 |
preservePath |
保存包含文件名的完整文件路径 |
js
//app.js
// 消费multer
const upload = multer({storage})
// 改造我们的路由
app.post('/upload/:classify',upload.single('file'),(req,res,next)=>{
res.send(200,{
success:true,
msg:'文件上传成功'
})
})
过滤
js
function fileFilter (req, file, cb) {
// 这个函数应该调用 `cb` 用boolean值来
// 指示是否应接受该文件
// 拒绝这个文件,使用`false`,像这样:
cb(null, false)
// 接受这个文件,使用`true`,像这样:
cb(null, true)
// 如果有问题,你可以总是这样发送一个错误:
cb(new Error('I don\'t have a clue!'))
}
错误处理机制
js
const upload = multer({storage,fileFilter}).single('file');
app.post('/upload/:classify',function(req,res,next){
upload((req,res,function(err){
if(err instanceof multer.MulterError){
console.log(err.message)
}else if(err){
// 其他错误
}
res.send(200,{
success:true,
msg:'文件上传成功'
})
}))
})
📢 如有错误请看multer文档
启发:
- 学过内容总忘记,写文章记录下吧😁
- multer的使用再次加深