2014-12-01 2 views
0

Я использую 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 моего сервера и сделать его в представлении. Я надеюсь, что это помогает кто-то :-)

ответ

1

На сервере, который называют файл для загрузки:

$file = file_get_contents(urlwhereyoudownload) ; 

А на сервере, где вебсервис является регистр:

header('Content-type: $mimetypeoffile'); 
header('Content-Disposition: attachment; filename=".$fileName."'); 
readfile("$pathtofile");exit;