2013-02-25 12 views
5

this linkからpdfファイルをダウンロードしたいと思います。ページから、毎週の要約を選択し、最初のpdfをダウンロードします。このPDFファイルをPHPを使ってダウンロードするには

PDF週刊概要 - 先週:私は、次のコードを使用していますインサイダー

順は、私がPHPを使用してダウンロードすることができないようだ

<?php 

$file="https://www.sedi.ca/sedi/SVTWeeklySummaryACL?name=W1ALLPDFI&locale=en_CA"; 

if (file_exists($file)) 
{ 
    if (FALSE!== ($handler = fopen($file, 'r'))) 
    { 
     header('Content-Description: File Transfer'); 
     header('Content-Type: application/octet-stream'); 
     header('Content-Disposition: attachment; filename='.basename($file)); 
     header('Content-Transfer-Encoding: chunked'); //changed to chunked 
     header('Expires: 0'); 
     header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
     header('Pragma: public'); 
     //header('Content-Length: ' . filesize($file)); //Remove 

     //Send the content in chunks 
     while(false !== ($chunk = fread($handler,4096))) 
     { 
      echo $chunk; 
     } 
    } 
    exit; 
} 
echo "<h1>Content error</h1><p>The file does not exist!</p>"; 


?> 

、PDFをダウンロードしてみてください。自分でダウンロードしてポップアップウィンドウを確認できます。助言がありますか?

私はカールも試しましたが、まだダウンロードできません。ファイルサイズはゼロです。

<?php 

    $file="https://www.sedi.ca/sedi/SVTWeeklySummaryACL?name=W1ALLPDFI&locale=en_CA"; 

    $path = 'c:\download\output.pdf'; 

    $ch = curl_init($file); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

    $data = curl_exec($ch); 

    curl_close($ch); 

    file_put_contents($path, $data); 


?> 
+4

理由だけでダイレクトにクライアントを指していませんURL?あなたが実際にpdfについて何かを変えているようなものではありません。単にそれをプロキシするだけです。 –

+1

カールは、いつものように論文の日になります –

+0

@MarcB、あなたは私にそれをする方法を教えてくれますか? –

答えて

6

最後に、PHPのcurlとCURLOPT_REFERER設定でPDFファイルをダウンロードできました。以下はコードです。 ?

<?php 

$url = 'https://www.sedi.ca/sedi/SVTWeeklySummaryACL?name=W1ALLPDFI&locale=en_CA'; 
$path = "/pdf/output.pdf"; 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_REFERER, 'https://www.sedi.ca/sedi/SVTReportsAccessController?menukey=15.03.00&locale=en_CA'); 

$data = curl_exec($ch); 

curl_close($ch); 

$result = file_put_contents($path, $data); 

    if(!$result){ 
      echo "error"; 
    }else{ 
      echo "success"; 
    } 

>

また
7

の代わりにだけではなく、なぜ、あなたのPHPサーバーがプロキシとして動作するようになって:

<?PHP 
$file="https://www.sedi.ca/sedi/SVTWeeklySummaryACL?name=W1ALLPDFI&locale=en_CA"; 
header("Location: $file"); 
?> 

バージョン2

<?PHP 
$file="https://www.sedi.ca/sedi/SVTWeeklySummaryACL?name=W1ALLPDFI&locale=en_CA"; 
header('Content-type: application/pdf'); 
header('Content-Disposition: attachment; filename="filename.pdf"'); 
readfile($file); 
?> 

バージョン3

curl_setopt($ch, CURLOPT_REFERER, 'https://www.sedi.ca/sedi/SVTWeeklySummaryACL?name=W1ALLPDFI&locale=en_CA'); 

は、この行を追加します。あなたの元のコードに?

+0

私はちょうどローカルにpdfをダウンロードしたいが、私のウェブサイトにそれを表示しない。 –

+0

[PHP聖書](http://www.php.net/manual/en/index.php) – supajason

+0

あなたのコードを試しましたか?それは動作していません。 –

0

、ここに述べたように:私たちは、次を追加する必要があります。httpsため

Download a image from SSL using curl?

を:

 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
関連する問題