Как я могу отправить поток данных и строку в одном ответе, используя Slim - PullRequest
0 голосов
/ 30 сентября 2019

Я создаю 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, но строка все еще отображается на сайте. Что мне здесь не хватает?

...