如何将文件转换为CakePHP控制器操作?

时间:2011-11-17 17:00:29

标签: php cakephp file-upload curl

我正在尝试使用cURL将文件发送到CakePHP控制器进行保存。类似的东西:

$file_path = "/full/path/to/file.wav";
$data = array(
    'contents'  => '@'.$file_path
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/cakeapp/uploads/putItem');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);

不幸的是,我似乎无法在另一方获取$ data,而不是$ this->数据或我能想到的任何其他方式。我在这做错了什么?谢谢!

3 个答案:

答案 0 :(得分:0)

试试这个。

$data = array('data' => 
    array( 'contents'  => '@'.$file_path)
);

如果这导致$ this->数据中的内容,请告诉我......它应该。

变量'data'变为$ this-> CakePHP中控制器中的数据。

答案 1 :(得分:0)

我推荐,istead http://localhost/cakeapp/uploads/putItem使用:

$url = Router::url(
    array(
        'controller' => 'controller',
        'action'     => 'action',
        param_if_needed1,
        param_if_needed2
    ),
    true //absolute, false ( default ) - relative
);

还可以尝试"@/full/path/to/file.wav"而无需连接

使用'manual'提交检查http-sniffer传输的参数。
CakePHP中的Chek调试级别和php.ini中的错误报告

答案 2 :(得分:0)

令人讨厌(但也许并不令人惊讶)它似乎不是上面代码中的问题,而是指向localhost上的页面;我将蛋糕应用程序移动到另一个位置并且看到,$ this-> params ['form']存在且正确。如果有人知道在这种情况下可能导致cURL失败的原因,那么这个问题仍然可以有更好的答案......