当前位置: 首页 > 后端技术 > Node.js

node+multer实现图片上传

时间:2023-04-03 12:00:10 Node.js

最近在学习node实现一个后台管理系统。我使用图片上传。有一些小问题要记录~直接上传代码,问题记录在评论~constexpress=require('express');constpath=require('路径');constmulter=require('multer');constapp=newexpress();//设置静态目录的第一个参数为虚拟文件前缀,实际上在文件系统中是不存在的//可以使用public作为Prefix来加载静态文件夹app下的文件.use('/public',express.static(path.join(__dirname,'./static')));//根据当前文件目录指定文件夹constdir=path.resolve(__dirname,'../static/img');//图片大小限制KBconstSIZELIMIT=500000;conststorage=multer.diskStorage({//指定文件路径destination:function(req,file,cb){//!!!相对路径以节点执行目录为准,避免权限问题,目录应该已经存在*//cb(null,'./uploads');cb(null,dir);},//指定文件名filename:function(req,file,cb){//filedname指向参数键值cb(null,Date.now()+'-'+file.originalname);}});constupload=multer({storage:storage});app.post('/upload',upload.single('file'),(req,res)=>{//图片的key值form-data对象待上传{key:value}//检查是否有要上传的文件if(req.file===undefined){returnres.send({errno:-1,msg:'nofile'});}const{size,mimetype,filename}=req.file;常量类型=['jpg','jpeg','png','gif'];consttmpTypes=mimetype.split('/')[1];//检查文件大小if(size>=SIZELIMIT){returnres.send({errno:-1,msg:'fileistoolarge'});}//检查文件类型elseif(types.indexOf(tmpTypes)<0){returnres.send({errno:-1,msg:'notacceptedfiletype'});}//pathconsturl='/public/img/'+filename可以根据设置的静态目录指定;res.json({errno:0,msg:'上传成功',url});});app.listen(3000,()=>{console.log('服务启动');});附上文档参考链接:expressframeworkpathmodulemulter最后附上一个节点自动重启工具nodemon