Я создаю Slim API для инструмента обновления. Цель всего этого - после некоторых проверок ответить клиенту с помощью Zipfile. Это работает просто отлично. Но я не только хочу отправить клиенту запрошенный zip-файл, но также хочу добавить некоторую информацию, собранную из базы данных. Эта информация является строкой.
Прямо сейчас мой рабочий код для ответа zipfile выглядит следующим образом:
// up until this point several validations were successfully run, nothing special....
$zip = fopen($dir, 'r');
$response->write("$zip ");
$stream = new \Slim\Http\Stream($zip); // create a stream instance for the response body
//$stream = new \Slim\Http\Stream([$zip, $clientData]); // create a stream instance for the response body
//$response->getBody()->withStatus(200)->withBody("Hello, $name, ");
return $response->withHeader('Content-Type', 'application/force-download')
->withHeader('Content-Type', 'application/octet-stream')
->withHeader('Content-Type', 'application/download')
->withHeader('Content-Description', 'File Transfer')
->withHeader('Content-Transfer-Encoding', 'binary')
->withHeader('Expires', '0')
->withHeader('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
->withHeader('key', $uuid)
->withBody($stream); // all stream contents will be sent to the response
Как мне изменить его, чтобы (в псевдо-php) сделать это:
$zip = fopen($dir, 'r');
$response->write("$zip ");
$stream = new \Slim\Http\Stream($zip); // create a stream instance for the response body
$queryResult = 'Some JSON as string';
$responseArray = [$stream, $queryResult];
return $response->withbody($responseArray);
Я пробовал вышеуказанное решение, но оно не работало правильно. Я получаю ошибку 500, но строка все еще отображается на сайте. Что мне здесь не хватает?