while ($line = fgets($formData, self::$partSize)) {
if ($boundary . "\r\n" == $line || $boundary . "--\r\n" == $line) {
//如果是分割
$infoPart = true;
if ($info['type'] == 'json') {
$data = json_decode($data, true);
$retData[$info['name']] = $data;
} else if($info['type'] == 'file') {
if(isset($info['tmp_file'])) {
fclose($info['file_handle']);
$retData[$info['name']] = [
'org_name' => $info['org_name'],
'tmp_file' => $info['tmp_file']
} else {
$retData[$info['name']] = $data;
$data = '';
} else if ("\r\n" == $line) {
if ($infoPart) {
//解析info
$info = self::parserInfo($data, $options);
if (isset($info['tmp_file'])) {
$info['file_handle'] = fopen($info['tmp_file'], 'w');
$data = '';
$infoPart = false;
} else {
if($infoPart == false && isset($info['tmp_file'])) {
fwrite($info['file_handle'], $line);
} else {
$data .= $line;
fclose($formData);
print_r($retData);
private static function parserInfo($data, $options)
//获取参数名称, type
$infoPattern = '/name="(.+?)"(; )?(filename="(.+?)")?/'; //todo: 待优化
preg_match($infoPattern, $data, $matches);
$info['name'] = $matches[1];
$info['type'] = 'json';
//如果是文件
if (count($matches) > 4) {
$info['type'] = 'file';
$info['org_name'] = $matches[4];
//如果设置保存文件, 保存到临时文件
if (isset($options['saveFile']) && $options['saveFile']) {
$tmpFile = tempnam(sys_get_temp_dir(), 'FD');
$info['tmp_file'] = $tmpFile;
return $info;
put patch 用这个方法可以接受文件 和数据 ,解决表单乱码。
class FormDataParser{ private static $partSize = 4096; //每次最大获取字节 /** * 负责解析FormData */ public static function parser($options = []) { //$options['saveFile'] =
1) 在数学上来说:diff/
patch
,diff是对2个集合求差,
patch
是求和
diff A B >C ,一般A是原始文件,B是修改后的文件,C称为A的补丁文件。
patch
A C 就能得到B, 这一步叫做对A打上了B的名字为C的补丁。
patch
-R B C 就可以重新还原到A了。
2) 内核补丁
diff -uNr linux-2.6.xxx linux-2.6.xxx.1 > diff.
patch
cp diff.
patch
linux-2.6.xxx/.
cd linux-2.6.xxx
patch
-p1 < diff.p
转载 出处:https://www.cnblogs.com/haha520/p/6564701.html
因为需要在
php
开发中对接其它接口需要用
php
curl去对接其它接口 我把他们封装成函数 希望能对大家有所帮助
这里面是封装好的 会自动把data进行转成json格式 同时解码成
php
数组输出
1 function geturl($url){
PUT和
PATCH
都属于HTTP协议中的请求方法,主要用于向服务器更新资源。它们的区别如下:
1. PUT请求:将一个完整的资源替换为请求中的新资源。如果该资源不存在,则会创建一个新资源。使用PUT请求时,需要将要更新的完整资源的所有属性都包含在请求中。
2.
PATCH
请求:仅更新资源的部分属性。使用
PATCH
请求时,只需要在请求中包含要更新的属性即可,不需要包含所有属性。
PATCH
请求通常用于对资源的局部更新。
因此,PUT请求更适合用于更新整个资源,而
PATCH
请求更适合用于更新部分资源。
nginx 卸载后重新安装/etc/nginx配置文件没了,cannot open /etc/nginx/nginx.conf (No such file or directory)
来碗豆腐脑: