我尝试将远程PDF加载并保存到我的服务器以获取项目,但该链接没有文件扩展名。它是一种安全的链接。
当我在浏览器中打开链接时,我可以下载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
答案 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下载到我的服务器。 点击链接只让我下载本地。