2016-09-09 3 views
0

Я пытаюсь загрузить и сохранить удаленный PDF-файл на мой сервер для проекта, но ссылка не имеет расширения файла. Это своего рода защищенная связь.Загрузить удаленный 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

+0

Ну, для начала вы, вероятно, не хотите включать свой session_key во все, что вы публикуете в Интернете. Кроме того, вы проверили связанные потоки, такие как этот http://stackoverflow.com/questions/15076323/how-to-download-this-pdf-file-using-php ?? – Kaylined

+0

Нет, я видел эту нить. Спасибо, я посмотрю. – Leroy

ответ

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 метод, базовая аутентификация и многое другое.

0

Спасибо за ваш ответ, но ваш код не сохраняет PDF-файл, который вы ищете. Это сейфы в PDF с содержимым HTML:

WWW.ENABLELOGISTICS Включить Логистика v95.4248
Добро пожаловать на Enable
Logistics Пожалуйста, введите ваше имя пользователя и пароль для входа в
Забыли пароль.?
© 2016 Ярких Люди Технология Pty Ltd

Я понятия не имею, как халявные Ф к моему серверу. Нажав на ссылку, давайте загрузим локально.

Смежные вопросы