Nodejs无刷新上传文件+进度条可视化显示
实现的效果
先看看是不是你想要的那种效果,是的话就继续看吧,不是的话就可以划走了。
我这里是上传了一个JAVA的一个帮助文档,大小是26.4M,点击上传以后,整个页面不会刷新,同时进度条实时更新上传的进度。文件越大的话进度条显示的会越明显。
实现原理
1.无刷新上传
无刷新上传主要是用到了iframe标签实现的,让form提交结果转到iframe中,不转向其他URL,以此来实现无刷新上传。
2.进度条
进度条的话用到了两个东西,一个是Nodejs的第三方模块formidable,还有一个就是原生JS的window对象。formidable有一个progrss事件,可以实时监听上传的进度,通过window对象调用父窗口的进度条对象方法实时更新进度。
代码实现部分
1.无刷新上传
<form action="upload" method="post" target="hideUrl" enctype="multipart/form-data" style="margin-bottom:20px;">
姓名:<input type="text" name="name"/><br>
图片:<input type="file" name="img"/><br>
<input type="submit" value="提交">
<iframe name="hideUrl" style="width:0px;height:0px;visibility:hidden;"></iframe>
</form>
2.进度条
app.post("/upload",function(req,res){
var form=new