2015-04-23 26 views
2

我已经为我的ownCloud应用程序编写了一个REST接口。我有方法getFileFromRemote($path)应该返回一个带有文件内容的JSON对象。 不幸的是,这只适用于我在$path中指定的文件是纯文本文件。当我尝试调用图像或PDF的方法时,状态码为200,但响应为空。为了返回文件内容,我使用file_get_contents来检索内容。使用JSON发送二进制文件内容


注:我知道ownCloud有一个WebDAV的接口,但我想只用REST来解决这个问题。


EDIT 这是代码服务器侧(ownCloud):

public function synchroniseDown($path) 
{ 
    $this->_syncService->download(array($path));//get latest version 
    $content = file_get_contents($this->_homeFolder.urldecode($path)); 
    return new DataResponse(['path'=>$path, 'fileContent'=>$content]); 
} 

第一行检索downloades的ownCloud服务器上的内容和工作原理完全。

+0

接收和发送内容的代码很有帮助。 – yergo

+0

我已经添加了一些代码 – user2810895

回答

2

你可能不得不base64_encode您的文件内容进行json_encode /解码处理得当:

return new DataResponse([ 
    'path'=>$path, 
    'fileContent' => base64_encode($content) // convert binary data to alphanum 
]); 

,然后通过第二侧接收文件时,你必须总是:

$fileContent = base64_decode($response['fileContent']); 

这只是一个,但最简单的方法来处理。顺便说一句,迟早你会发现,Mime-Type将是有用的回应。

相关问题