下载远程PDF

时间:2016-09-09 17:46:30

标签: php pdf curl download

我尝试将远程PDF加载并保存到我的服务器以获取项目,但该链接没有文件扩展名。它是一种安全的链接。

https://www.enablelogistics.com.au/BECPRD/SSOAuth.aspx?SESSION_KEY=F86A56B3-D12C-4E70-AE71-A8A422B3EA4E&LINK_PAGE=ITINERARYENC&TRANS_ID=A25D191B-B098-4F45-9217-FB6D2B70F803

当我在浏览器中打开链接时,我可以下载PDF文件,但是用我的脚本保存它并没有成功。

有没有办法用脚本在我的服务器上保存PDF? 我尝试使用代码但没有成功:

$url ="https://www.enablelogistics.com.au/BECPRD/SSOAuth.aspx?SESSION_KEY=F86A56B3-D12C-4E70-AE71-A8A422B3EA4E&LINK_PAGE=ITINERARYENC&TRANS_ID=A25D191B-B098-4F45-9217-FB6D2B70F803";
getFileContents($url);

function getFileContents($url)
{
// Workaround: Save temp file
$img = tempnam(sys_get_temp_dir(), 'pdf-');
$img .= '.' . pathinfo($url, PATHINFO_EXTENSION);

$fp = fopen($img, 'w+');

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

$result = curl_exec($ch);
curl_close($ch);

fclose($fp);

return $result ? $img : false;
}

我在这里找到了脚本:Downloading a large file using curl

2 个答案:

答案 0 :(得分:0)

要下载文件(二进制或不二进制),您可以使用file_get_contents()。 file_get_contents将文件内容返回到字符串中。

//Download PDF content
$pdfContent = file_get_contents("https://www.enablelogistics.com.au/BECPRD/SSOAuth.aspx?SESSION_KEY=XXXXXXX-DDDD-4444-AAAA-XXXXXXX&LINK_PAGE=ITINERARYENC&TRANS_ID=AAAAAAAA-3333-5555-6666-222222222");

$fileName = "myPDF.pdf";
$fp = fopen($fileName, 'w+');
//Write content into the file
fwrite($fp, $pdfContent);
fclose($fp);

您可以根据需要使用file_get_contents中的选项来指定GET或POST方法,基本身份验证等。

答案 1 :(得分:0)

感谢您的回复,但您的代码并未保存我正在寻找的PDF。 它使用HTML内容保护PDF:

  

WWW.ENABLELOGISTICS Enable Logistics v95.4248
  欢迎使用启用   后勤请输入您的用户名和密码进行登录   忘记密码?
©2016 Bright People Technologies Pty Ltd

我不知道如何将pdf下载到我的服务器。 点击链接只让我下载本地。