我目前正试图解析通过Postman插件在Chrome中发送的multipart/form-data
。不过,我得到以下输出:解析多部分/表单数据cakephp 3
'------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功能来处理这个问题?
更新
我发现什么是错在我的代码,它似乎像路由过程莫名其妙清空后阵列提前。当我尝试使用以下端点的邮递员http://vecto.app/api/pictures $ this-> request-> data是空的。但是,当我尝试访问端点http://vecto.app/pictures时,$ this-> request->数据充满了信息。有谁知道什么是错用下面的路由设置:
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');
});
即使CakePHP不会提供访问表单数据的方法([** it does **](http://book.cakephp.org/3.0/ en/controllers/request-response.html#request-body-data)),为什么你甚至想自己解析它,当PHP已经做到了,并通过'$ _POST'和'$ _FILES'公开它? – ndm
$ this-> request-> data当我尝试通过邮递员时($ this-> request-> is('post')实际输出true),它是空的。 $ _POST和$ _FILES也是空的。我假设我做错了,但奇怪的是$ this-> request-> input()实际上包含了上面的代码片段。 – markvdlaan93
这应该会让你怀疑。很有可能您的请求无效/格式错误。 – ndm