使用JSON

时间:2015-04-23 07:01:44

标签: php json rest file-get-contents owncloud

我为自己的Cloud应用程序编写了一个REST接口。我的方法getFileFromRemote($path)应返回带有文件内容的JSON对象。 不幸的是,这仅在我在$path中指定的文件是纯文本文件时才有效。当我尝试为图像调用方法或PDF时,状态代码为200,但响应为空。为了返回文件内容,我使用file_get_contents来检索内容。

注意:我知道ownCloud有一个WebDAV界面,但我想用REST解决这个问题。

修改 这是代码服务器端(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]);
}

第一行检索下载ownCloud服务器上的内容并完全正常工作。

1 个答案:

答案 0 :(得分:3)

你可能需要base64_encode你的文件内容才能让json_encode / decode正确处理它:

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

然后在通过第二方接收文件时,您必须始终:

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

它只是一个,但是最容易处理的方法。顺便说一下,你迟早会发现Mime-Type会对你有所帮助。