【发布时间】:2021-03-09 12:43:10
【问题描述】:
API 向我发送了一个流,其中包含几个文件的 zip 存档,我通过在我的请求的参数 SelectedIds 中提供它们的 ID 来选择这些文件。
我收到一个 PSR7 响应,我将它传递给 HttpFoundationFactory 以返回与 Symfony 控制器应返回的内容相对应的响应。
(目标是在客户端浏览器中下载 zip。)
这是我的控制器方法的内容
$client = $this->getApiClient();
$user = $this->getUser();
$idList = [51,52,53];
$psr7ApiResponse = $client->post('/v1/get-zip', [
'headers' => [
'Authorization' => sprintf('Bearer %s', $user->getToken()),
],
'http_errors' => false,
'json' => [
'SelectedIds' => $idList,
],
]);
$httpFoundationFactory = new HttpFoundationFactory();
return $httpFoundationFactory->createResponse($psr7ApiResponse);
它在本地完美运行,但在服务器上我什么也没收到,空白页。你知道我应该怎么看吗,因为我没有错误日志,看起来流是空的,但我不知道如何检查。
我用邮递员测试了API,没问题;我的控制器也给我发回了 200
【问题讨论】:
-
您是否尝试在生产环境中将
http_errors设置为 true? -
是的,没有错误一切正常:'(但响应似乎是空的
-
$psr7ApiResponse里面是什么?它应该包含一个状态代码和一些希望有更多信息的标题。您是否完全打开了 PHP 中的错误报告? -
我真的没有错误,它在本地运行得很好,但不是在线。所有状态码都是 200。很难调试。当我将提要的内容传输到浏览器时,它似乎没有完全返回到我的后端
-
同一个 API 中是否还有其他不下载 ZIP 的函数(例如简单的 GET 或 POST),您可以在 PROD 上进行测试,以确定 API 是否存在问题一个整体,还是孤立于这个特定的过程?如果是前者,还要确认您的 API 端点没有 IP 白名单限制阻止它发送您的产品服务器响应。您能否在
$psr7ApiResponse内发布回复。
标签: php download stream symfony-3.4 guzzle6