php-使用JSON发送二进制文件内容
作者:互联网
我为我自己的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服务器上,并且可以正常工作.
解决方法:
您可能必须对文件内容进行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在响应中会很有用.
标签:owncloud,file-get-contents,rest,json,php 来源: https://codeday.me/bug/20191120/2043980.html