如何用PHP下载一个生成的pdf文件?

问题描述 投票:1回答:1

我正在努力获取一个由外部服务器生成的PDF文件。

这里是资源的链接。https:/www.test.colisprive.commcadeskExterneShowEtiquettePDF.aspxetiquette_colis-23-23000000000833300-PDF_DEFAUT-N

所以你可以看到,不需要识别。

我注意到,我可以在URL的末尾写任何我想要的东西,它将被浏览器集成的pdf阅读器解释为标题。但是当使用 "另存为... "时,文件的名称已经被设置为一个固定的值。

我试着用cURL获取,但它返回 "Object moved to here."(链接),除了链接不起作用,使用CURLOPT_FOLLOWLOCATION返回false。

我真的需要从这个URL下载pdf文件,但我完全卡住了,任何想法将是非常欢迎的!!!。

谢谢你,BR。

马努

编辑:我试了一下。

$curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_HTTPHEADER => array(
        ),
        CURLOPT_URL=>"https://www.test.colisprive.com/mcadesk/Externe/ShowEtiquettePDF.aspx/etiquette_colis-23-23000000000833300-PDF_DEFAUT-N/Etiquette_23000000000833300.pdf",
        CURLOPT_RETURNTRANSFER => 1,
    ));

    $resp = curl_exec($curl);
    var_dump($resp);

    curl_close($curl);
php pdf php-curl
1个回答
2
投票

如果请求中没有提供以下信息,上述网站将不提供所请求的内容(并发出一个重定向)。User-Agent 头。

PHP的CURL没有设置 User-Agent 缺省 file_get_contents. 不同的是,命令行 curl 和Python的 urllib.request.urlretrieve 做,这就是为什么你用后者成功的原因。

在PHP的CURL中,你必须设置好的 User-Agent 由你自己的,但它只是一行。

请注意,你所访问的网站需要它,但却接受 任何 User-Agent.

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_HTTPHEADER => array(
        "User-Agent: curl" // <--- the User Agent is specified by setting the corresponding header
    ),
    CURLOPT_URL=>"https://www.test.colisprive.com/mcadesk/Externe/ShowEtiquettePDF.aspx/etiquette_colis-23-23000000000833300-PDF_DEFAUT-N/Etiquette_23000000000833300.pdf",
    CURLOPT_RETURNTRANSFER => 1
));

$resp = curl_exec($curl);

var_dump($resp);

curl_close($curl);

 

你得到的输出看起来像。

%PDF-1.4
1 0 obj
<< 
/Length 1514
/Filter /FlateDecode
.
.
.

 

你实际上收到的是一个PDF。


然后你可以将获取的PDF文件

echo $resp;

或将文件存储在您的服务器上

file_put_contents( "/path/to/file", $resp );

© www.soinside.com 2019 - 2024. All rights reserved.