温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Node如何上传文件

发布时间:2021-12-30 10:00:23 来源:亿速云 阅读:158 作者:小新 栏目:大数据

小编给大家分享一下Node如何上传文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

        首先,我们可以给出一个最初的方案,然后在代码中不断进行完善。我给出的方案一是这样一个简单逻辑:

Node如何上传文件

那接下来首先我们先来完成第一步:检验图片参数

Node如何上传文件

        我这里写了一个方法用来检验图片参数是否完整,参数要求为一张启动图加上四个商品属性值,如果参数出现不存在的情况,则直接给客户端返回error.

        接下来第二步是实现图片上传的逻辑,所以我定义了一个通用的上传文件方法:

uploadPicsAndCheckPar(req, checkParFunc, maxPic, pathDir, isNeedUid, cb)

我们先来看看参数如何理解:

req: 来源于表单请求checkParFunc: 检测上传文件参数的方法maxPic: 图片最大上传张数限制pathDir: 服务器保存上传文件文件夹名称isNeedUid: 为每张图片分配一个uidcb: 回调到路由层

首先在config.js中配置上传文件主目录:

CONFIG.PICSMAINPATH = '/mnt/test';

接下来生成multiparty对象,并配置上传目标路径:

var form = new multiparty.Form({uploadDir: (mainPath + '/picTemp/')});

然后执行图片上传操作:

form.parse(req,function (error,fields,files)

到这里上传图片就结束了么?当然没有!别忘了刚才我们说过的对图片数量,大小等做限制。首先我们先解析参数格式:

Node如何上传文件

检测上传图片数量是否大于我们设置的maxPic,如果超过数量,则删除上传的图片返回error。检测图片大小是否超过4M,如果超过4M则删除图片返回error

Node如何上传文件

我们可以看下删除图片的逻辑,其实就是循环表单删除图片:

Node如何上传文件

接下来我们还得判断每张图片的名称是否只有一个,一张图片如果出现两个名称则删除图片返回error

Node如何上传文件

当然了,我们上传文件既然准备封装成公共方法,当然得适配非图片文件的情况,我这里针对视频进行了处理:

Node如何上传文件

如果视频大小符合要求,检验参数是否符合接口要求,符合接口要求则重命名视频名称。那我们来看看重命名方法如何实现:

Node如何上传文件

首先,我们需要构造路径,我这里以当前年月日结合uid为路径,遍历检查路径是否存在,不存在则创建文件夹

Node如何上传文件

最后更新图片路径为真实路径

Node如何上传文件

到这里验证图片参数全部通过,上传图片成功。给路由层返回参数列表。在路由层进行数据库层逻辑处理。

Node如何上传文件

到这里一个完整的上传功能我们就实现完成,接下来我们来测试下上传接口是否可以正常运转

Node如何上传文件

可以看到参数如果不完整,直接给客户端返回对应的错误信息。

Node如何上传文件

如果按照刚才我们设定的接口要求传参,就可以看到我们图片上传成功。接下来我们可以看下我们定义的上传文件夹是否有图片成功上传。

Node如何上传文件

        可以看到图片成功上传,路径就是以当前年月日作为文件夹。我们可以快速的查看我们所上传的图片。当然,如果需要上传的资源很多,把所有资源都上传到服务器会给服务器带来一定的负荷,所以其实我们可以采用将图片直接上传到COS中。COS使用其实很便捷,官方有SDK可以直接引入进行使用,这些本篇就不涉及了。

以上是“Node如何上传文件”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI