nodejs-post文件上传原理详解 - CNode
odejs-post文件上传原理详解
基础知识
简单介绍下,如下图:
其中请求报文中的开始行和首部行包含了常见的各种信息,比如http协议版本,方法(GET/POST),accept-language,cookie等等。 而'实体主体'一般在post中使用,比如我们用表单上传文件,文件数据就是在这个'实体主体'当中。
引子
写这篇教程的起因是因为在学习nodejs的过程中,想要自己实现一些文件上传的功能,于是不得不去研究POST。
如果你写过一点PHP,那么你肯定记得,在PHP里面,进行文件上传的时候,我们可以直接使用全局变量 $_FILE['name' ]来获取已经被临时存储的文件信息。
但是实际上,POST数据实体,会根据数据量的大小进行分包传送,然后再从这些数据包里面分析出哪些是文件的元数据,那些是文件本身的数据。
PHP是底层做了封装,但是在nodejs里面,这个看似常见的功能却是需要自己来实现的。这篇文章主要就是介绍如何使用nodejs来解析post数据。
正文
总体上来说,对于post文件上传这样的过程,主要有以下几个部分:
获取http请求报文头部信息
利用nodejs中的 http.ServerRequest中获取
1):
用来标识请求类型
其中我们关心两个字段:
包含了表单类型和边界字符串(下面会介绍)信息。
post数据的长度
关于content-type
获取POST数据