使用API​​中的wp_remote_post请求下载文件

时间:2018-05-10 10:26:48

标签: php wordpress rest

我向端点发出API请求,根据给定的参数和详细信息,它会以PDF格式发送回报告,供我查看我发送给它的详细信息。我使用wp_remote_post使用WordPress,但无法将文件下载到计算机。

这个关于downloading a file in PHP via REST的问题很有用,但并不完全处理相同类型的事情/场景,所以我一直坚持如何让它按照我需要的方式工作。

这是我使用PHP var_dump回复的回复:

'date' => string 'Thu, 10 May 2018 11:25:00 GMT' (length=29)
'server' => string 'Apache/2.4.7 (Ubuntu)' (length=21)
'content-disposition' => string 'attachment; filename="xyz.pdf"' (length=37)
'cache-control' => string 'no-cache, private' (length=17)
'x-ratelimit-limit' => string '60' (length=2)
'x-ratelimit-remaining' => string '58' (length=2)
'content-type' => string 'application/pdf' (length=15)

在回复的正文部分我得到了这个:

  'body' => string '%PDF-1.4
1 0 obj
<<
/Title ( title )
/Creator ( creator )
/Producer ( producer )
/CreationDate ( creationdate )
'... (length=22237)

我相信wkhtmltopdf是创建正在发回的PDF的库/框架的响应。如何将此文件作为PDF文件下载到计算机上并提供给请求它的用户?

我已尝试回复回复并使用urldecode,但我不确定这是什么样的回应以及如何处理它。

1 个答案:

答案 0 :(得分:1)

您可能只需要设置正确的响应标头。您可以使用&#39; wp_remote_retrieve_body&#39;获取响应正文,设置标题,并回显PDF数据。以下是您的示例:

$data = wp_remote_retrieve_body($response);
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="somefile.pdf"');
echo $data;

这会导致文件自动下载。如果您希望文件显示在浏览器窗口中,请使用&#39; inline&#39;对于Content-Disposition标题。

header('Content-Disposition: inline');