http post form-data时content解析

Posted lee88688

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http post form-data时content解析相关的知识,希望对你有一定的参考价值。

上传文件表单的时候http协议过程

首先在浏览器中采用表单的形式上传文件代码如下

<form action="/api/uploads" method="POST" enctype="multipart/form-data">

    <div class="form-group">

        <input type="file" class="form-control-file" name="file">

        <input type="submit" value="Upload">

    </div>

</form>

由于在http协议中的规定,enctype必须是multipart/form-data,而在file input中的name后续会变为上传的参数,上传的文件名为model.py下面展示在firefox中的请求消息头

 技术分享图片

post的内容如下

 技术分享图片

boundary是用于分割post内容不同文件部分,在内容中我们看到Content-Disposition后面参数中有name以及filename这两个参数就是在input中选择的填写参数,俄日在Content-Type后面就是文件内容。如下图所示分隔符可以分割出不同部分。在flask的request中将参数包裹在其中,传递的所有文件都在request.files中,可以通过request.files[name]来选择不同的file,也可以通过request.files.items()获取一个迭代器。

技术分享图片

表单内容存在文件以及其它数据时post content的内容与上图相似,首先我们来看下面代码

<form action="/api/uploads" method="POST" enctype="multipart/form-data">

    <div class="form-group">

        <input type="file" class="form-control-file" name="file">

        <input type="text" name="t1">

        <input type="text" name="t2">

        <input type="submit" value="Upload">

    </div>

</form>

 

在post content中内容如下

 技术分享图片

表单的每个字段都被单独分割开,在flask的request中form存储了这些name与内容,但文件并不在form中存储,而在request.files中存储。

 

以上是关于http post form-data时content解析的主要内容,如果未能解决你的问题,请参考以下文章

IONIC HTTP post multipart/form-data - 图像与 JSON 一起上传

使用 RestSharp 发送 HTTP POST Multipart/form-data 字段

文件上传 API:Multipart/form-data 与正文中的原始内容?

在android中使用Http Post发送Form-data Post请求

如何通过HttpClient去POST一个multipart/form-data数据

如何使用 HTTP POST multipart/form-data 将文件上传到服务器?