解析 multipart/form-data cakephp 3

Parse multipart/form-data cakephp 3

我目前正在尝试解析我在 Chrome 中通过 Postman 插件发送的 multipart/form-data。但是,我得到以下输出:

'------WebKitFormBoundarymsXhoqlRBbTbsZFb
Content-Disposition: form-data; name="album_id"

2
------WebKitFormBoundarymsXhoqlRBbTbsZFb
Content-Disposition: form-data; name="description"

haiahaahahahdaisdhisadhisadihsdhiiahsd
------WebKitFormBoundarymsXhoqlRBbTbsZFb
Content-Disposition: form-data; name="favorite"

true
------WebKitFormBoundarymsXhoqlRBbTbsZFb
Content-Disposition: form-data; name="uploadfile"; filename="test2.txt"
Content-Type: text/plain

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim  veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat  cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
 ------WebKitFormBoundarymsXhoqlRBbTbsZFb
 Content-Disposition: form-data; name="uploadfile"; filename="test.txt"
 Content-Type: text/plain

 Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
 tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
 quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
 consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
 cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
 proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
 ------WebKitFormBoundarymsXhoqlRBbTbsZFb--
 '

当我尝试调试 $this->request->input() 时,我得到了这个输出。当我尝试 $this->request->input('json_decode') 时,我得到一个空数组,所以我假设数据的格式不正确(只是一个字符串)。在我编写自己的算法之前,我想确定我不会用这个重新发明轮子。我做错了什么?或者,如果没有,是否存在一些 Cakephp 3 函数来处理这个问题?

更新
我发现我的代码有什么问题,路由过程似乎以某种方式提前清空了 post 数组。当我尝试使用以下端点 http://vecto.app/api/pictures $this->request->data is empty. However, when I try to access the endpoint http://vecto.app/pictures 的 Postman 时,$this->request->data 中填充了信息。有谁知道以下路由设置有什么问题:

Router::prefix('api', function ($routes) {
   $routes->extensions(['json', 'xml']);
   $routes->resources('Users');
   $routes->resources('Pictures');
   // We connect the /register action so we can simply extend the CRUD    Plugin add() method 
   // and benefit of already available logic like validation and response codes instead of having to reinvent the wheel.
   Router::connect('/api/users/register', ['controller' => 'Users',   'action' => 'add', 'prefix' => 'api']);
   $routes->fallbacks('InflectedRoute');
 });

我终于找到了解决方案,它是清空 $this->request->data 数组的 beforeFilter。因此,输入数组不为空,但数据数组为空。这是导致问题的代码:

public function beforeFilter(Event $event) { 
    if ($this->request->is('post')) { 
        $data = $this->request;
        $this->request->data = $this->request->input(function ($data) { 
            return json_decode($data, true); 
        }); 
    } 
}