Отправка содержимого двоичного файла с использованием JSON

Я написал REST-интерфейс для моего приложения ownCloud. У меня есть метод 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 и работает полностью.

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 было бы полезно в ответ.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]