Я использую CakePHP 2.3, и у меня есть два приложения на двух разных серверах. Мне нужно загрузить файл с первого сервера с помощью REST. Я сделал свои приложения RestFul и настроил маршруты. Я могу опубликовать, получить, поместить и удалить, но я не могу сделать это, чтобы загрузить файл. Ниже приведен пример кода для полученияКак загрузить файл с RESTFUL cakePHP 2.3
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, исполняя с RESTful архитектуры, которая у меня уже есть на месте.
Редактировать По прошествии некоторого времени я, наконец, получил его на работу. В случае, если кто-то сталкивается с одной и той же проблемой, все дело в том, чтобы лучше понять cakePHP HttpSocket. Итак, сначала на сервере, на котором зарегистрирован вебсервис (где мы загружаем файл), ниже приведена моя функция; его реакция представляет собой файл, как описано (here)
public function getpdffile($id = NULL){
$filepath = APP. 'Files' .DS. 'file.pdf'; //path to the file of interest
$this->response->file($filepath);
return $this->response;
}
Поскольку файл не был публичным (не в корневой директории), я должен был использовать MediaView. Затем после установки этого, я бы получить его для загрузки с помощью HttpSocket, как показано ниже:
public function download($id = NULL, $fileMine = 'pdf', $fileName = 'file', $download = TRUE){
$httpSocket = new HttpSocket();
$filepath = APP. 'Files'. DS. 'myfile.pdf';
$file = fopen($filepath, 'w');
$httpSocket->setContentResource($file);
$link = MAIN_PROJECT_SERVER."rest_internal_applications/getpdffile/".$id.".json";
$httpSocket->get($link);
fclose($file);
$this->response->file($filepath);
return $this->response;
}
То, что я там был скопировать файл в папку App моего сервера и сделать его в представлении. Я надеюсь, что это помогает кто-то :-)