我为自己的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服务器上的内容并完全正常工作。
答案 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
会对你有所帮助。