nodejs 之express 文件上传
使用中间件multer管理上传文件
使用方法
//1 引入
let multer = require('multer');
//2 实例化
let objMulter = multer({ dest: './upload' }); //dest: 指定 保存位置(存到服务器)
//安装中间件,
app.use(objMulter.any()); //允许上传什么类型文件,any 代表任何类型
app.get('/reg',(req,res)=>{
req.files
})

req.files是一个数组,每一个上传的文件有如下描述
fieldname: 表单name名
originalname: 上传的文件名
encoding: 编码方式
mimetype: 文件类型
buffer: 文件本身
size:尺寸
destination: 保存路径
filename: 保存后的文件名 不含后缀
path: 保存磁盘路径+保存后的文件名 不含后缀
可以使用fs模块修改文件名
let oldname=req.files[i].path;
let newname=oldname+path.parse(req.files[i].originalname).ext;
fs.renameSync(oldname,newname);
path模块用来解析路径
path.parse('c:\\wamp\\xx.png') // string -> object
{
root: 'c:\\', 盘符
dir: 'c:\\wamp', 目录
base: 'xx.png', 文件名
ext: '.png', 扩展名
name: 'xx' 文件,不含扩展名
}
path.join('磁盘路径1','磁盘路径2','磁盘路径n')//合并片段
path.resolve('磁盘路径1','磁盘路径n') //合并磁盘片段,右到左找根,左到右拼接,没有找到根,以当前文件路径为根
__dirname 全局变量 返回当前文件所在的磁盘路径
let express=require('express');
let multer=require('multer')
let app=express();
let fs=require('fs');
const path=require('path');
app.listen(7755,console.log("启动服务"));
app.use(express.static('./public'))
let objMulter=multer({dest:'./public/upload'})
app.use(objMulter.any());
// let str1='~public\\upload\\a37fc3aa270700ecbd858d8fc7485c02.png'
// let str2='c:/sss/\aa//d.ff'
// let str3=''
// console.log(path.parse(str1));
// console.log(path.parse(str2));
// console.log(path.join(str1,str2,str3))
// console.log(path.resolve(str2))
app.get('/api',(req,res,next)=>{
try {
let urllist=[];
for(let i=0;i<req.files.length;i++){
let oldname=req.files[i].path;
let newname=oldname+path.parse(req.files[i].originalname).ext;
fs.renameSync(oldname,newname);
let url="http://localhost:7755/upload/"+req.files[i].filename+path.parse(req.files[i].originalname).ext
urllist.push(url);
}
res.send({err:0,url:urllist})
} catch (error) {
console.log(error)
}
})

浙公网安备 33010602011771号