我已经为我的 ownCloud 应用编写了一个 REST 接口(interface)。我有方法 getFileFromRemote($path)
应该返回一个包含文件内容的 JSON 对象。
不幸的是,这仅在我在 $path
中指定的文件是纯文本文件时才有效。当我尝试调用图像或 PDF
的方法时,状态代码为 200,但响应为空。为了返回文件内容,我使用 file_get_contents
来检索内容。
注意:我知道 ownCloud 有一个 WebDAV 接口(interface),但我只想用 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]);
}
第一行 retrieve 在 ownCloud 服务器上下载内容并完全运行。
最佳答案
您可能必须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
在响应中很有用。
关于php - 使用 JSON 发送二进制文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29816007/