如何使用express+multer实现node中的图片上传功能
作者
小编给大家分享一下如何使用express+multer实现node中的图片上传功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
具体内容介绍如下所示:
在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中
在node中使用multer中间件来对上传路由接口进行处理
multer文档
package.json
html部分
<body> <divclass="form-group"> <label>Fileinput:</label> <inputtype="file"name="file"id="file"> <pid="result"></p> <imgid="img"src=""> </div> <buttonid="upload"class="btnbtn-default">提交</button> </body>
js部分
<scriptsrc="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script> //上传图片的业务逻辑函数 functionuploadFile(){ //上传图片的input varfile=document.getElementById("file") //因为准备用post提交,又因为图片的内容比较大,所以我们选择使用formdata来承载数据 //创建formdata对象 varformData=newFormData(); //给formdata对象中放入数据(键值对的方式) formData.append('file',file.files[0]); //提交请求 $.ajax({ url:'/upload',//请求路径 type:'POST', data:formData, contentType:false,//为了让浏览器根据传入的formdata来判断contentType processData:false,//同上 success:function(data){ if(200===data.code){ $('#result').html("上传成功!"); $('#img').attr('src',data.data); }else{ $('#result').html("上传失败!"); } console.log(2) }, error:function(){ $("#result").html("与服务器通信发生错误"); } }); console.log(1) } //给按钮添加点击事件 functionpostPage(){ //上传按钮 varuploada=document.getElementById('upload'); uploada.addEventListener("click",function(){ uploadFile(); },false); } window.onload=function(){ postPage(); } </script>
NodeJS逻辑代码
consthttp=require('http') constpath=require('path') constexpress=require('express') //是nodejs中处理multipart/form-data数据格式(主要用在上传功能中)的中间件 //文档:https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md constmulter=require('multer') constapp=express() //配置express的静态目录 app.use(express.static(path.join(__dirname,'public'))); app.get('/',(req,res)=>{ res.sendFile(__dirname+'/index.html') }) //配置diskStorage来控制文件存储的位置以及文件名字等 varstorage=multer.diskStorage({ //确定图片存储的位置 destination:function(req,file,cb){ cb(null,'./public/uploadImgs') },  //确定图片存储时的名字,注意,如果使用原名,可能会造成再次上传同一张图片的时候的冲突 filename:function(req,file,cb){ cb(null,Date.now()+file.originalname) } }); //生成的专门处理上传的一个工具,可以传入storage、limits等配置 varupload=multer({storage:storage}); //接收上传图片请求的接口 app.post('/upload',upload.single('file'),function(req,res,next){ //图片已经被放入到服务器里,且req也已经被upload中间件给处理好了(加上了file等信息) //线上的也就是服务器中的图片的绝对地址 varurl='/uploadImgs/'+req.file.filename res.json({ code:200, data:url }) }); http.createServer(app).listen(3000,()=>{ console.log('serverislistening') })
自我感觉良好,不知道博客园为什么要给我移除首页....
再发一次,if(delete){ alert('Neverpublishanythingagain.') }else{ alert(1) }
看完了这篇文章,相信你对“如何使用express+multer实现node中的图片上传功能”有了一定的了解,如果想了解更多相关知识,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!
目录
推荐阅读
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~