PHP-handle-multipart-form-data-via-put-request_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP-handle-multipart-form-data-via-put-request

PHP-handle-multipart-form-data-via-put-request

 2018/6/24 2:20:43  FZtree  程序员俱乐部  我要评论(0)
  • 摘要:很明显,php不支持$_PUTPUT方法提交的简单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
  • 标签:for PHP

很明显,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,贴一下修改后的

?

class="php">// 解析 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;
}

?

?

?

就这样了

?

?

上一篇: 知海匠库:为什么大家都在学Java? 下一篇: 没有下一篇了!
发表评论
用户名: 匿名