编程语言
首页 > 编程语言> > php-使用JSON发送二进制文件内容

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