axios 获取上传进度_PHP获取HTTP body内容的方法总结

有时候我们获取数据时需要根据Header中的格式来解析,比如上传一个json而不是一个文本。这里用到了 php输入|输出流 的概念。

PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器。

本文涉及到了了,php://input,详尽内容请参阅官网:点击查看官网 (http://php.net/manual/zh/wrappers.php.php)

php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。

模拟代码

// server.php
switch($_SERVER['CONTENT_TYPE']){case 'application/json':// 这里通过输入端来获取数据$body = file_get_contents('php://input');echo '这是一个json:', $body;break;// ...
}
// client_web.php, 注意这里使用了 axios
// ...
service = axios.create({baseURL: 'mydomain',validateStatus:function(status){if(500 >= status) alert('server fails');}
});// 发一个请求
service.post(url, {// ...headers: {'Content-Type':'application/json'},data:'{"code":100}'// ...
});// 全局设置也没问题
service.interceptors.request.use(function(config){// 这里设置请求头config.headers['Content-Type'] = 'application/json';return config;
}, function(err){});

引申阅读

以下为官方文档小抄

PHP 输入|输出流分为: php://stdin, php://stdout 和 php://stderr

php://stdin、php://stdout 和 php://stderr 允许直接访问 PHP 进程相应的输入或者输出流。 数据流引用了复制的文件描述符,所以如果你打开 php://stdin 并在之后关了它, 仅是关闭了复制品,真正被引用的 STDIN 并不受影响。 注意 PHP 在这方面的行为有很多 BUG 直到 PHP 5.2.1。 推荐你简单使用常量 STDIN、 STDOUT 和 STDERR 来代替手工打开这些封装器。

其中 php://stdin 是只读的, php://stdout 和 php://stderr 是只写的。

php://output

php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。

php://fd

php://fd 允许直接访问指定的文件描述符。 例如 php://fd/3 引用了文件描述符 3。

php://memory 和 php://temp

php://memory 和 php://temp 是一个类似文件 包装器的数据流,允许读写临时数据。 两者的唯一区别是 php://memory 总是把数据储存在内存中, 而 php://temp 会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。 临时文件位置的决定和 sys_get_temp_dir() 的方式一致。

php://temp 的内存限制可通过添加 /maxmemory:NN 来控制,NN 是以字节为单位、保留在内存的最大数据量,超过则使用临时文件。

php://filter

php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。

php://filter 目标使用以下的参数作为它路径的一部分。 复合过滤链能够在一个路径上指定。详细使用这些参数可以参考具体范例。

7f03d9af8f6a2e718409dea672a7ce23.png

干货分享

敬请关注“PHP技术大全”微信公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python编程快速上手 让繁琐工作自动化 豆瓣_2019年,这些豆瓣评分9.0以上的8本程序员好书你都知道吗?...

豆瓣这些9.0以上的高评分程序员好书你都知道有哪些吗?小编去豆瓣看了一下,推荐这8本最适用的程序员好书给你。 1、UNIX环境高级编程(第3版)(豆瓣评分9.6)UNIX编程圣经 与…

hadoop集群swap_hadoop集群调优-OS和文件系统部分

OS and File System根据Dell(因为我们的硬件采用dell的方案)关于hadoop调优的相关说明,改变几个Linux的默认设置,Hadoop的性能能够增长大概15%。open file descriptors and files文件描述符是一个索引值,指向内核为每一个进程所维护的该进程打…

python搭建selenium_自动化测试之路3-selenium3+python3环境搭建

1、首先安装火狐浏览器 有单独文章分享怎么安装 2、搭建python环境 安装python,安装的时候把path选好,就不用自己在配置,安装方法有单独文档分享 安装好以后cmd打开输入python查看是否配置好 3、安装pip 一般python会默认带一个,放…

linux perl的while循环中ctrl+c失效,perl循环控制

if格式(类似于awk):if(表达式){ #空格可以忽略语句 ;} #elsif注意多了个s,elsif和else可以省略elsif(表达式){ #语句块的{}必须有,可以为空语句:}else{语句&#xff1…

keras实现简单lstm_深度学习(LSTM)在交通建模中的应用

上方点击蓝字关注?在简单了解了LSTM原理之后,本期我将以航班延误预测为例为大家介绍一下如何利用Python编程来构建LSTM模型。这里我们要用到一个高级的深度学习链接库——Keras,它以TensorFlow或者Theano作为后端引擎,只处理模型的建立、训练和预测等功…

井下关于风速的规定_矿井有害气体最高允许浓度、温度、风速的规定

≥0.5%CH4≥0.5%CH4<0.5%CH4被串掘进巷道内全部非本质安全型电气设备回风流中机电设备硐室的进风侧≥0.5%CH4≥0.5%CH4<0.5%CH4机电设备硐室内全部非本质安全型电气设备关于温度的规定《煤矿安全规程》规定,生产矿井采煤工作面的空气温度不得…

linux 大数字 进制转换,Linux下用bc快速进行数字进制转换

介绍如何在Linux下用bc命令进行快速的数字进制转换。我想Windows里,数字进制转换最方便的就是自带的calc计算器,但是它原没有我们可爱的Linux方便。Linux下,我们在term里敲 几下键盘就可以做数字进制转换了。当然,你如果自己转换更…

python替换nan_python – 用NaN替换字典的空值

我有一个缺少值的字典(密钥在那里,但相关的值是空的).例如,我想要下面的字典:dct {ID:, gender:male, age:20, weight:, height:5.7}要改为这种形式:dct {ID:NaN, gender:male, age:20, weight:NaN, height:5.7}我怎样才能以最省时的方式写出来呢&…

commons-pool2-2.3 jar包_[漏洞复现]FastJson 1.2.61远程代码执行漏洞(From第三方jar包)

前言最近FastJson更新了黑名单,升级到了1.2.61版本,我尝试bypass其黑名单,在AutType打开的情况下成功绕过了黑名单防护.(目前暂未修复,官方即将更新)复现环境准备1.JDK 8U202.所需jar清单如下fastjson-1.2.61.jarcommons-configuration2-2.0.jarcommons-lang3-3.3.2.jarcommons…

linux安装dev命令,Linux安装与基础命令

首先准备一个liunx镜像和一台安装好虚拟机的电脑。配置好虚拟机,选在稍后安装。选择镜像文件,开启虚拟机进行安装。配置yum源。首先插入光盘。由于是虚拟机,用的光盘镜像,在/mnt/下面创建一个文件夹yum 。 复制所有光盘里的内…

python爬取京东评论_Python如何爬取京东的评价信息

Python如何爬取京东的评价信息 模块:requests,BeautifulSoup import re import time import csv import requests from bs4 import BeautifulSoup def write_a_row_in_csv(data, csv_doc): "save good information into a row in csv document"…

王思聪吃热狗的c语言小程序,王思聪吃热狗火了,开发各种恶搞小程序!王校长:我不要面子的啊...

原标题:王思聪吃热狗火了,开发各种恶搞小程序!王校长:我不要面子的啊近日王校长上了不少次热搜,其中有一条就是王校长吃热狗火了,接下来就出现了各种各样的表情包,手机壳,素描等等。…

python有什么内容_python能做什么

python能做什么?书声琅琅Python培训老师介绍,最近许多的朋友咨询,听说python很火,甚至可以超越JAVA,因此很想学这个python,但是不知道python能做什么,能完成一些什么项目呢?针对这个问题,今天…

酷狗音乐linux版_让父母也爱上音乐 酷狗音乐大字版成中老年人新宠

当智能手机成为人们日常生活中必不可少的一部分,手机早已从单纯的通话设备变成了功能强大的“百宝箱”,听音乐、看视频、拍照上网早已不是什么新鲜事。然而在我们玩手机玩的不亦乐乎时,你有没有关注过爸妈对使用智能手机的接受度?…

二分法求近似根c语言程序,求一C++风格程序,用二分法求f(x)=0的根

满意答案vwamuoor8000推荐于 2018.04.24#include #include typedef double (*F)(double);/* brief 二分法求解函数* param[in] f 求解的函数* param[in] a, b 求解的区间端点* param[in] 吵盯e 精度* pre f(a)*f(b)<0且f在该闭区间上连续* return 方程液枝的解 */double sol…

react的导出是怎么实现的_从零开始开发一个 React

这个是从零开始开发一个 React 系列的第七篇。想要访问之前的内容可以点击下方的链接进行访问&#xff1a;最简单的实现&#xff0c;包括 vdom 结构&#xff0c;createElement&#xff0c;ReactDOM.render增加 Class 的支持增加 JSX 的支持增加 state 支持增加声明周期增加 dom…

python io操作有什么_Python笔记:文件IO操作

读取文件 使用open()打开文件&#xff0c;文件不存在会抛出IOError错误。 try: f open(/path/to/file, r) print(f.read()) finally: if f: f.close() 文件读取完成一定要close()&#xff0c;为了保证在报错的时候也能close()&#xff0c;这里用了finally语句&#xff0c;更简…

c语言编程被当作病毒,为什么这个微不足道的C程序被检测为病毒?

我有点生锈在C,但我遇到了这个奇怪的问题&#xff1a;我写了这个程序&#xff1a;#include main(){int n;n1;while (n>0){puts("Write a number: ");scanf(" %d",&n);printf("This is the number you wrote: %d\n", n);}}显然绝对没有语法…

太极发送卡片软件_QQ卡片式消息一键发送app

QQ卡片式消息一键发送app这是一款能够帮助你有创意的发送广告的app。属于qq的辅助工具&#xff0c;能够让你发送属于自己的卡片信息。如果你想要给自己打广告或者发送某张图片&#xff0c;或者想要显示应用&#xff0c;就可以使用这款软件&#xff0c;它能够帮你迅速地生成卡片…

c语言中字符串 x,使用c语言解析字符串176x144中的数字

在做jpeg codec的时候&#xff0c;经常需要输入图片的大小&#xff0c;即长和宽。对于一个jpeg图片&#xff0c;它的大小几乎是任意的&#xff0c;所以只能用数字来表示&#xff0c;而不能选择cif&#xff0c;qcif等这类固定的图片格式。在用数字表示图片大小时&#xff0c;大家…