zoukankan      html  css  js  c++  java
  • nodejspost文件上传原理详解

    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请求报文肿的头部信息,我们可以从中获得是否为POST方法,实体主体的总大小,边界字符串等,这些对于实体主体数据的解析都是非常重要的

    • 获取POST数据(实体主体)

    • 对POST数据进行解析

    • 将数据写入文件



    获取http请求报文头部信息




    利用nodejs中的 http.ServerRequest中获取1):



    • request.method


    用来标识请求类型



    • request.headers






    其中我们关心两个字段:



    • content-type


    包含了表单类型和边界字符串(下面会介绍)信息。



    • content-length


    post数据的长度





    关于content-type




    • get请求的headers中没有content-type这个字段

    • post 的 content-type 有两种


      1. application/x-www-form-urlencoded

        这种就是一般的文本表单用post传地数据,只要将得到的data用querystring解析下就可以了

      2. multipart/form-data

        文件表单的传输,也是本文介绍的重点



    获取POST数据

  • 相关阅读:
    win7网络共享原来如此简单,WiFi共享精灵开启半天都弱爆了!
    JQUERY UI Datepicker Demo
    Official online document, install svn server in centOS
    JAVE not work in linux
    AMR 转mp3 失败
    XD, XR, DR 股票
    Linux 下MySql 重置密码
    Difinition Of Done
    Apache, Tomcat, JK Configuration Example
    Linux 安装tomcat
  • 原文地址:https://www.cnblogs.com/lexus/p/2391845.html
Copyright © 2011-2022 走看看