Swoole\Http\Parser::parseFormData PHP Method

parseFormData() static public method

解析form_data格式文件
static public parseFormData ( Request $request, $cd ) : unknown_type
$request Swoole\Request Swoole\Request
$cd
return unknown_type
    static function parseFormData(Swoole\Request $request, $cd)
    {
        $cd = '--' . str_replace('boundary=', '', $cd);
        $form = explode($cd, rtrim($request->body, "-"));
        //去掉末尾的--
        foreach ($form as $f) {
            if ($f === '') {
                continue;
            }
            $parts = explode("\r\n\r\n", trim($f));
            $header = self::parseHeaderLine($parts[0]);
            if (!isset($header['Content-Disposition'])) {
                continue;
            }
            $meta = self::parseParams($header['Content-Disposition']);
            //filename字段表示它是一个文件
            if (!isset($meta['filename'])) {
                if (count($parts) < 2) {
                    $parts[1] = "";
                }
                //支持checkbox
                if (substr($meta['name'], -2) === '[]') {
                    $request->post[substr($meta['name'], 0, -2)][] = trim($parts[1]);
                } else {
                    $request->post[$meta['name']] = trim($parts[1], "\r\n");
                }
            } else {
                $file = trim($parts[1]);
                $tmp_file = tempnam('/tmp', 'sw');
                file_put_contents($tmp_file, $file);
                if (!isset($meta['name'])) {
                    $meta['name'] = 'file';
                }
                $request->files[$meta['name']] = array('name' => $meta['filename'], 'type' => $header['Content-Type'], 'size' => strlen($file), 'error' => UPLOAD_ERR_OK, 'tmp_name' => $tmp_file);
            }
        }
    }