我向端点发出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
,但我不确定这是什么样的回应以及如何处理它。
答案 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');