很明显,php不支持$_PUT
PUT方法提交的简单form可以
parse_str(file_get_contents('php://input'), $data);
Content-Type:multipart/form-data; 这样的form通过put方法提交就很尴尬了
解决这个问题得有思路
先去找找开源代码
https://stackoverflow.com/questions/9464935/
实际使用发现有bug,贴一下修改后的
// 解析 http 请求类型是 multipart/form-data 的数据 function parse_multipart_form(){ // Fetch content and determine boundary $raw_data = file_get_contents('php://input'); $boundary = substr($raw_data, 0, strpos($raw_data, "\r\n")); // Fetch each part $parts = array_slice(explode($boundary, $raw_data), 1); $data = array(); foreach ($parts as $part) { // If this is the last part, break if ($part == "--\r\n") break; // Separate content from headers $part = ltrim($part, "\r\n"); list($raw_headers, $body) = explode("\r\n\r\n", $part, 2); // Parse the headers list $raw_headers = explode("\r\n", $raw_headers); $headers = array(); foreach ($raw_headers as $str) { $pos = strpos($str, ':'); $name = substr($str, 0, $pos) and $value = substr($str, 1+$pos); $headers[strtolower($name)] = ltrim($value, ' '); } // Parse the Content-Disposition to get the field name, etc. if (isset($headers['content-disposition'])) { preg_match( '/^(.+); *name="([^"]+)"(; *filename="([^"]+)")?/', $headers['content-disposition'], $matches ); list(,,$name) = $matches; $data[$name] = substr($body, 0, strlen($body) - 2); isset($matches[4]) and $data[$name] = ['filename'=>$matches[4],'binary'=>$data[$name]]; } } return $data; }
就这样了
相关推荐
在IT行业中,网络通信是不可或缺的一部分,而上传文件或发送包含多个部分的数据通常涉及使用`multipart/form-data`编码方式。`multipart/form-data`是一种HTTP请求的Content-Type,它允许我们发送一个请求体,其中...
### multipart/form-data 参数传递 在Web开发中,`multipart/form-data`是一种用于发送表单数据的编码类型,尤其适用于处理文件上传。此编码方式能够使客户端浏览器将表单中的普通文本字段与文件字段一起发送到...
用C语言实现multipart/form-data文件上传,没有用到curl之类的库。之前做个小的日志上传程序写的。
### 解决Java enctype "multipart/form-data" 文件上传传值问题 在Java Web开发中,处理文件上传是一项常见的任务。特别是当涉及到使用`multipart/form-data`作为表单的编码类型时,这种需求更为突出。本文将深入...
在Web开发中,当涉及到通过HTTP协议向服务器发送POST请求时,我们经常需要选择不同的数据编码类型,主要是`application/x-www-form-urlencoded`和`multipart/form-data`。这两种编码方式各有其适用场景,主要取决于...
使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,
在探讨“解决当FORM的ENCTYPE='multipart/form-data'时request.getParameter()获取不到值的方法”这一主题时,我们首先需要理解为什么在特定情况下,传统的`request.getParameter()`方法无法正常工作,以及如何通过...
总的来说,Delphi 7 使用 Indy 10 的 `TIdHTTP` 控件和 `TIdMultipartFormDataStream` 类可以方便地实现 `multipart/form-data` 方式的文件上传。理解这些组件的工作原理和使用方法,对于开发涉及文件交互的Web应用...
当我们需要上传文件或同时发送键值对(包括复杂的数据结构如JSON)时,通常会使用`multipart/form-data`和JSON这两种数据格式。下面我们将深入探讨如何在C#中实现这两种数据格式的POST请求。 一、`multipart/form-...
本篇文章将详细探讨如何在C#中处理`multipart/form-data`和JSON格式的数据。 `multipart/form-data`是HTTP协议中一种用于上传文件或发送复杂数据(如带有文件的表单数据)的Content-Type。在C#中,我们可以使用...
在处理表单数据时,PHP经常使用`multipart/form-data`编码方式,尤其是当上传文件时。然而,这种编码方式可能存在安全风险,其中之一就是PHP的multipart/form-data远程DoS(拒绝服务)漏洞。 在`multipart/form-...
前端开源库-node-red-contrib-securedhttp-multipartnode red contrib secured http multipart,node red node创建安全的HTTP multipart端点
这份代码在 HttpMultipartFormDataParser (https://github.com/Vodurden/Http-Multipart-Data-Parser) 的基础上,解决了中文乱码的问题。希望给和我一样曾经被这个问题困扰的朋友一些帮助。 关于代码的使用方式,请...
前端开源库-node-red-contrib-http-multipartnode red contrib http multi part,一个节点red节点,用于为标准节点red http节点提供多部分形式支持。
在本主题中,我们将深入探讨如何使用C#来模拟POST请求,以便发送JSON和multipart/form-data格式的数据。这两种数据格式在现代网络应用中非常常见,特别是用于API交互和文件上传。 首先,让我们了解JSON(JavaScript...
Android模拟 HTTP multipart/form-data 请求协议信息实现图片上传
multipart/form-data是一种数据格式,它将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition...
下面,我们将深入讨论`multipart/form-data`以及与之相关的Java编程实践。 1. **multipart/form-data**: 当用户在HTML表单中包含`<input type="file">`时,浏览器会将整个表单数据以`multipart/form-data`编码...
在Java Web开发中,我们经常遇到表单提交数据的情况,特别是涉及到文件上传时,`<form>`标签的`ENCTYPE`属性通常会被设置为`multipart/form-data`。这是因为`multipart/form-data`允许在请求中携带二进制数据,如...
multipart/form-data是另一种常用的编码格式,它将窗体数据编码为一条消息,页上的每个控件对应消息中的一个部分。这种编码格式可以上传文件,并且可以处理复杂的数据结构。 在实际开发中,我们需要根据具体情况...