diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php index 7c3fa253..16e2e650 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitLocationsApiController.php @@ -1942,11 +1942,11 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController if(!strstr($content_type, 'multipart/form-data')) return $this->error400(); - $multiPartRequestParser = new ParseMultiPartFormDataInputStream(); - $input = $multiPartRequestParser->getInput(); - $metadata = $input['parameters']; - $files = $input['files']; - $file = null; + $parser = new ParseMultiPartFormDataInputStream(file_get_contents('php://input')); + $input = $parser->getInput(); + $metadata = $input['parameters']; + $files = $input['files']; + $file = null; if(isset($files['file'])) $file = $files['file']; @@ -2158,11 +2158,11 @@ final class OAuth2SummitLocationsApiController extends OAuth2ProtectedController if(!strstr($content_type, 'multipart/form-data')) return $this->error400(); - $multiPartRequestParser = new ParseMultiPartFormDataInputStream(); - $input = $multiPartRequestParser->getInput(); - $metadata = $input['parameters']; - $files = $input['files']; - $file = null; + $parser = new ParseMultiPartFormDataInputStream(file_get_contents('php://input')); + $input = $parser->getInput(); + $metadata = $input['parameters']; + $files = $input['files']; + $file = null; if(isset($files['file'])) $file = $files['file']; diff --git a/app/Http/Utils/ParseMultiPartFormDataInputStream.php b/app/Http/Utils/ParseMultiPartFormDataInputStream.php index ee097277..6a64ba5e 100644 --- a/app/Http/Utils/ParseMultiPartFormDataInputStream.php +++ b/app/Http/Utils/ParseMultiPartFormDataInputStream.php @@ -25,12 +25,12 @@ final class ParseMultiPartFormDataInputStream protected $input; /** - * @function __construct - * + * ParseMultiPartFormDataInputStream constructor. + * @param $input */ - public function __construct() + public function __construct($input) { - $this->input = file_get_contents('php://input'); + $this->input = $input; } /** @@ -234,12 +234,14 @@ final class ParseMultiPartFormDataInputStream private function parameter($string) { $data = []; + $string = trim($string); + if(empty($string)) return $data; if ( preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $string, $match) ) { if (preg_match('/^(.*)\[\]$/i', $match[1], $tmp)) { - $data[$tmp[1]][] = ($match[2] !== NULL ? $match[2] : ''); + $data[$tmp[1]][] = (count($match) >=2 && $match[2] !== NULL ? $match[2] : ''); } else { - $data[$match[1]] = ($match[2] !== NULL ? $match[2] : ''); + $data[$match[1]] = (count($match) >=2 && $match[2] !== NULL ? $match[2] : ''); } } diff --git a/tests/ParseMultiPartFormDataInputStreamTest.php b/tests/ParseMultiPartFormDataInputStreamTest.php new file mode 100644 index 00000000..f2d4ccf9 --- /dev/null +++ b/tests/ParseMultiPartFormDataInputStreamTest.php @@ -0,0 +1,34 @@ +getInput(); + + + } +} \ No newline at end of file