node+express文件上传 multer模块上传问题
2017-09-29 10:07
681 查看
在进行node web开发时,我们可能经常遇到上传文件的问题,这一块如果我们没有经验,可能会遇到很多坑,下面我将跟大家分享一下,实现文件上传的一些方式。
通过一段时间的查阅资料、摸索,我发现实现上传的方式有:1.express中间件multer模块(此效率最高,在express3.x原生支持,到了express4.x独立成一个模块了),2.connect-multiparty模块(但现在官方不推荐),3.使用multiparty模块实现(此方法比较普遍),4.使用formidable插件实现(插件呢,就是简单易懂);
首先知道enctype这个属性管理的是表单的MIME编码。共有三个值可选:
1、application/x-www-form-urlencoded
2、multipart/form-data
3、text/plain
其中application/x-www-form-urlencoded是默认值,作用是设置表单传输的编码。例如我们在AJAX中见过xmlHttp.setRequestHeader("Content-Type","application/x-www-form- urlencoded");如果不写会报错的,但是在html的form表单里是可以不写enctype=application/x-www-form-urlencoded,因为默认的HTML表单就是这种传输编码类型的。
而multipart/form-data是用来制定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或是是mp3等等。
text/plain是纯文本传输的意思,在发邮件的时候要设置这种编码类型,否则会出现接收时编码混乱的问题。网络上经常拿text/plain和 text/html做比较,其实这两个很好区分,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上。①和③都不能用于上传文件,只有multipart/form-data才能完整的传递文件数据。
参考文章
https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
http://blog.csdn.net/a1104258464/article/details/51697691
http://www.cnblogs.com/pingfan1990/p/4701355.html
一、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
其中application/x-www-form-urlencoded是默认值,作用是设置表单传输的编码。例如我们在AJAX中见过xmlHttp.setRequestHeader("Content-Type","application/x-www-form- urlencoded");如果不写会报错的,但是在html的form表单里是可以不写enctype=application/x-www-form-urlencoded,因为默认的HTML表单就是这种传输编码类型的。
而multipart/form-data是用来制定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或是是mp3等等。
text/plain是纯文本传输的意思,在发邮件的时候要设置这种编码类型,否则会出现接收时编码混乱的问题。网络上经常拿text/plain和 text/html做比较,其实这两个很好区分,前者用来传输纯文本文件,后者则是传递html代码的编码类型,在发送头文件时才用得上。①和③都不能用于上传文件,只有multipart/form-data才能完整的传递文件数据。
三、multer模块上传问题
参考文章
https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
http://blog.csdn.net/a1104258464/article/details/51697691
http://www.cnblogs.com/pingfan1990/p/4701355.html
相关文章推荐
- node.js学习笔记(8)--multer模块文件上传
- node+express用multer上传图片或者文件到服务器及用日期命名图片存储的文件夹
- nodejs express 框架 上传文件
- Nodejs进阶:基于express+multer的文件上传
- nodejs express 上传文件 (格式 FormData)
- ssh整合问题总结--在添加商品模块实现图片(文件)的上传
- Node和express中利用Jquery的$.ajax和HTML5的FormData完成文件上传示例
- 使用nodejs+express实现简单的文件上传功能
- 使用nodejs+express(4.x+)实现文件上传
- express学习过程中问题4 上传文件问题
- nodejs使用multiparty模块实现文件上传(另附express.bodyParser()的说明)
- Nodejs进阶 基于express+multer的文件上传
- Node.js 上传文件(multiparty包) (基于express)
- node文件上传(不用模块)
- 学node的一点小笔记(十二) node+express上传文件,自定义路径
- node使用express搭建简单web框架并实现文件上传
- node.js中关于使用formidable模块实现文件上传至指定目录的问题
- express文件上传中间件Multer详解
- express文件上传中间件Multer
- Express文件上传之Multer