我正在使用CakePHP 2.3,我有两个应用程序在两个不同的服务器上。我需要使用REST从第一个服务器下载一个文件。我已经使我的应用程序成为RestFul,并配置了路由。我可以发布、获取、放置和删除,但我不能下载文件。下面是一个示例代码,用于获取
public function view($id) {
$object = $this->Imodel->find('first', array('conditions' => array('Imodel.id' => $id), 'contain' => array()));
$this->set(array(
'object' => $object,
'_serialize' => array('object')
));
}
如果您能帮助我使用REST下载一个文件,并遵守我已经拥有的REST架构,我将不胜感激。
Edit过了一段时间,我终于让它工作起来了。为了防止其他人遇到同样的问题,整个过程都是为了更好地理解cakePHP HttpSocket。所以首先在注册Web服务的服务器上(我们从那里下载文件),下面是我的函数;它的响应是一个文件,如(此处)所述
public function getpdffile($id = NULL){
$filepath = APP. 'Files/file.pdf'; //path to the file of interest
$this->response->file($filepath);
return $this->response;
}
因为这个文件不是公共的(不在webroot中),我必须使用MediaView。然后在设置好这个之后,我会使用HttpSocket来检索它以供下载,如下所示:
public function download($id = NULL, $fileMine = 'pdf', $fileName = 'file', $download = TRUE){
$httpSocket = new HttpSocket();
$filepath = APP. 'Files/myfile.pdf';
$file = fopen($filepath, 'w');
$httpSocket->setContentResource($file);
$link = MAIN_SERVER."rest_models/getpdffile/".$id.".json";
$httpSocket->get($link);
fclose($file);
$this->response->file($filepath);
return $this->response;
}
我在那里所做的是将文件复制到我的服务器的App文件夹中,并在视图中渲染它。我希望它对某人有帮助:-)
1条答案
按热度按时间nzrxty8p1#
在哪个服务器上调用文件下载:
在注册webservice的服务器上: