2018/06/07 HTTP 中 Content-Type 的作用

在此之前先看一个小例子:

<?php
    var_dump($_FILES);?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Page Title</title>
</head>
<body>
    <form action="" method="POST">
        <input type="file" name="file">
        <input type="submit" value="submit">
    </form>
</body>
</html>

$_FILES 会获取到值么?

如果不是很清楚或者觉得可以获取到,那么可以接着看看。

本文部分图片和段落节选,原文为:理解HTTP之Content-Type

感谢。

Content-Type 是什么?

  通俗理解的的话,它就是我们规定发送数据包的一种格式,就像我们寄快递一样。不同的包装公司 (Content-Type) 有不同的包装方式。

  接受方也会根据这个值来进行下一步操作。

  这也就是说明了我们上面的那个小例子中。$_FILES 变量中为什么获取不到值。

  表单发送(未指定 Content-Type 使用默认),$_FILES 不认识默认的 Content-Type ,拒收,所以才会产生获取不到的情况

Content-Type 作用?

  Content-Type用于指定内容类型,一般是指网页中存在的Content-Type,Content-Type属性指定请求和响应的HTTP内容类型。如果未指定 ContentType,默认为text/html。

  在nginx中有个配置文件mime.types,主要是标示Content-Type的文件格式。

  下面是几个常见的Content-Type:

  1.text/html
  2.text/plain
  3.text/css
  4.text/javascript
  5.application/x-www-form-urlencoded
  6.multipart/form-data
  7.application/json
  8.application/xml

  ...

  前面几个都很好理解,都是html,css,javascript的文件类型,后面四个是POST的发包方式。

  下面讲讲他们具体的格式问题

Content-Type 的格式?

  1:application/x-www-form-urlencoded

    application/x-www-form-urlencoded是常用的表单发包方式,普通的表单提交,或者js发包,默认都是通过这种方式,

  2:multipart/form-data

    multipart/form-data用在发送文件的POST包。

    这里Content-Type告诉我们,发包是以multipart/form-data格式来传输,另外,还有boundary用于分割数据。

    当文件太长,HTTP无法在一个包之内发送完毕,就需要分割数据,分割成一个一个chunk发送给服务端,

  3:application/json

    通过json形式将数据发送给服务器,一开始,我尝试通过curl,给服务器发送application/json格式包,

  4:text/xml

    通过xml 形式将数据发送给服务器

    

总结:

    发现了么。

    php中$_POST只能读取application/x-www-form-urlencoded数据,$_FILES只能读取multipart/form-data类型数据.

    具体为什么,就因该想一下这这两种发送的不同。

    对于其他格式的传输,应该怎么取呢?

那么,要读取text/xml格式的数据,可以用:

$file = fopen(‘php://input’, ‘rb’);
$data = fread($file, length);
fclose($file);

或者

$data = file_get_contents(‘php://input’);

    对于其他格式传输,取得,其实都是一种文件流一样的。

    之后按照规则去转码。

原文地址:https://www.cnblogs.com/25-lH/p/9152024.html

时间: 2024-10-13 20:48:28

2018/06/07 HTTP 中 Content-Type 的作用的相关文章

转载 SharePoint【Site Definition 系列】– 创建Content Type

转载原地址:  http://www.cnblogs.com/wsdj-ITtech/archive/2012/09/01/2470274.html Sharepoint本身就是一个丰富的大容器,里面存储的所有信息我们可以称其为“内容(Content)”,为了便于管理这些Conent,按照人类的正常逻辑就必然想到的是对此进行“分类”.分类所涉及到的层面又必然包括: 1.分类的标准或特征描述{即:类型属性(或:与该类型项目相关联的属性)}. 2.对应类的关联动作(即:工作流,行为以及其他设置)  

Jsoup问题---获取http协议请求失败 org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.

Jsoup问题---获取http协议请求失败 1.问题:用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不符合要求. 错误信息: Exception in thread "main" org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or applic

the request doesn&#39;t contain a multipart/form-data or multipart/form-data stream, content type header

the request doesn't contain a multipart/form-data or multipart/form-data stream, content type header 一,HTTP上传的基本知识 在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型.下边是说明: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对.这是标准的编码格式. mult

org.springframework.web.HttpMediaTypeNotSupportedException: Content type &#39;application/json;charset=UTF-8&#39; not supported或其他Content type不支持处理

很久没从头到尾搭框架,今天搭的过程中,springmvc controller方法入参用@RequestBody自动绑定参数时一直提示各种 not supported 排查问题有两个解决路径: 1)使用post协议提交时,请检查Content type类型,如: $.ajax({ type: "POST", contentType: "application/json;charset=UTF-8", url: "/reg", data: JSON

CSOM创建Content Type并指定GUID

SharePoint 2013 Client Object Mode在创建Content Type时有一个限制,不能给Content Type指定一个GUID,只能由系统随机生成.而在用farm solution部署时,则可以在xml中指定好Content Type的GUID,或者用服务器端对象模型来指定GUID. SharePoint 2013 SP1发布之后,这个问题就迎刃而解了.在新的CSOM对象模型中,可以在创建Content Type时指定GUID.在o365上申请一个免费的开发网站,

解决&quot;415 Cannot process the message because the content type &#39;application/x-www-form-urlencoded&#39; was not the expected type &#39;text/xml; charset=utf-8&#39;&quot;

wcf basicHttpBinding content-type    text/xml;charset=utf-8 wsHttpBinding  'application/soap+xml; charset=utf-8' webHttpBinding 'application/x-www-form-urlencoded'   对应网页中的post请求 所以如果是post请求wcf服务,要使用webHttpBinding 解决"415 Cannot process the message be

SharePoint Development - Custom Content Type using Visual Studio 2010 based SharePoint 2010

本文所述均来自之前实际的项目模块 首先再论述一下SharePoint ContentType内容类型 SharePoint的列表和文档库可以储存不同类型的内容就叫做内容类型,比如文档库的文档,调查列表的调查等,都称作是内容类型.内容类型在网站范围内是可用的,不同的内容类型具有不同的内容和设置(如策略,关联的工作流等). 通俗来讲,内容类型可以是文档,可以是文件夹,也可以是字段的集合.创建好后的内容类型可以与列表关联,体现在列表的新建项目上.没有凭空而来的内容类型,任何自定义内容类型都是基于现有类

Mirco Code News [/2018/06/28]

蜜蜂有0的概念 http://www.iflscience.com/plants-and-animals/bees-are-the-first-insects-found-to-understand-the-concept-of-zero/ 麻省理工的科学家发现,蜜蜂??经过训练,可以识别出零0??这个概念.做法如下:首先,给蜜蜂两个白板,各自画上个数不同的形状,例如涂黑的圆圈.其次,给圆圈少的白板添加甜食奖励,给圆圈多的白板添加难闻的气味,通过反复训练,让蜜蜂??能识别个数少和多,蜜蜂能区分得

cocopods 镜像源更新 时间 2018年07月份

注意:本次更镜像源地址新时间为2018年07月份左右 如果您阅读本文章的时间与此时间相差太久.则可能没有参考价值. pod 的国内镜像源由原来的 https://gems.ruby-china.org 变更为  https://gems.ruby-china.com 变更的时间应该在 2018年07月份左右.如果你的pod无法更新很可能需要修改镜像源. 在命令行中输入以下代码更换数据源 1. 更换数据源 $ gem sources --add https://gems.ruby-china.co