nodejs教你搭建文件服务器

作者:admin / 时间:11个月前 (11/11) / 分类:后端测试 / 阅读:389 / 评论:0

先简单介绍下搭建的文件服务器有哪些功能:

(多)文件的上传(显示上传进度),下载,删除,移动端自适应,前后端文件合法性校验,服务端多线程,与媒体服务器互通。下面先来看下文件服务器的效果:

文件服务器页面

文件上传成功

文件删除提示

文件下载成功

先看下前端代码,关于html的就这几行,前端大部分都是js脚本(css在这里属于最简单的内容,就不讲了)。

html代码

当页面载入的时候会先判断媒体服务器有没有开启(媒体服务器我们下篇文章讲),如果媒体服务器开了就给出媒体服务器的链接,如果没开就提示媒体服务器没有开启!

检查媒体服务器状态

当选好文件点击上传的时候,下面的方法就起作用了,首先会去获取待上传文件的名称和大小,如果不是我们允许的文件,会直接给出警告,然后return掉,如果是我们允许的文件,按钮中的字将变成上传中。

检查文件合法性

构建一个ajax对象,将待上传的文件上传到服务器,这时候服务器会再判断一下文件合法性,如果不符合要求会直接返回错误信息。

ajax上传文件

下面的是显示html5支持上传进度的信息,因为这是html5才支持的特性,所以低版本的浏览器可能无法正常显示。

上传进度信息

Axios是一款基于promise的ajax库,非常好用,但只有高版本的浏览器才支持,低版本的用axios需要编译。Axios将获取的文件信息被js动态的创建html标签并显示在网页上。

axios获取文件列表

当所有标签都创建完成,再将删除的方法绑定到对应的dom元素上。

添加删除方法

至此,前端的工作就结束了,下面我们看下服务端是怎么写的。

下面的这段代码是创建了一个多线程node服务,多线程不仅增加了服务器的处理能力,还加强了服务器的稳定性。

创建多线程node服务

创建服务器,如果访问的是主页,那么就直接显示刚刚创建的前端文件。

主页面路由

收到的请求如果是上传文件,会先初始化接收文件方法,然后判断文件是否合法,不合法就直接返回错误信息给前端,不储存文件;如果合法则进行对应的储存工作,存储完删除临时文件。因为支持单文件和多文件同时上传,所以这里还做了单文件和多文件上传的判断操作。

文件上传的服务端处理

下面的这段是ajax请求的地址,服务器返回文件列表信息。

响应ajax请求

下面这段对应文件的删除操作,在收到前端发来的删除请求之前,需要判断文件是否存在,因为可能存在两个人同时删除的情况。如果不判断直接操作,js会报错。这里还有个地方需要注意:url在传输过程中某些特殊字符会被浏览器转义,而我们不希望被浏览器转义就需要转码。如果不转码,会存在某些文件删除不了的情况,严重的会引起服务端崩溃。

响应删除请求

最后的这一段是用来处理静态文件的,对应的功能就是文件下载,处理静态文件不是我们今天的主题,这里就一笔带过,有兴趣的同学自行研究。

处理静态文件

至此,文件服务器搭建完毕。


没有评论,留下你的印记,证明你来过。


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。