这个系列文章是自己在开发过程中,自己感悟学习以及借鉴各方大师大神经验分享,非常尊重每个人的劳动成果,目的就是与大家共同分享学习,共同进步!
后台资源管理,增删改查操作必不可少,其中增加资源又是一切的根本,增加的资源的方式有很多种,
1.上传文件 2.复制链接 3.库存导入 4.其他
那今天要和大家要和大家分享的就是最主动地,最基础的方式,自主上传内容这种形式。今天要介绍的方法有三种,留个悬念,开始吧。
一、node+express实现文件上传的常用方式
常用的实现上传的方式有:
1.express中间件multer模块(此效率最高,在express3.x原生支持,到了express4.x独立成一个模块了)
2.connect-multiparty模块(但现在 官方不推荐 )
3.使用multiparty模块实现(此方法比较普遍)
4.使用formidable插件实现(插件呢,就是简单易懂);
二、了解multipart/form-data
首先知道enctype这个属性管理的是表单的MIME编码。共有三个值可选:
1.application/x-www-form-urlencoded
2.multipart/form-data
3.text/plain
1.application/x-www-form-urlencoded是默认值,作用是设置表单传输的编码。
例如我们在AJAX中见过 xmlHttp.setRequestHeader("Content-Type","application/x-www-form- urlencoded");如果不写会报错的,但是在html的form表单里是可以不写enctype=application/x-www- form-urlencoded,因为默认的HTML表单就是这种传输编码类型的。
2.multipart/form-data是用来制定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或是是mp3等等。
3.text/plain是纯文本传输的意思
在发邮件的时候要设置这种编码类型,否则会出现接收时编码混乱的问题。网络上经常拿text /plain和 text/html做比较,其实这两个很好区分,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上。①和③都不能用于上传文件,只有multipart/form-data才能完整的传递文件数据。
当我们采用enctype='multipart/form-data' 会以request payload提交数据,如图
三、multer模块上传问题
github地址: https://github.com/expressjs/multer https://www.npmjs.com/package/multer
Multer是node的一个中间件,通过multipart/form-data类型提交,如果在顶部写入busboy模块(可以快速解