PHP スクリプトで curl を使用してリモートのサードパーティ サーバーからファイルをダウンロードしようとすると、問題が発生します。
ファイルはcsvで、データベースからデータを読み取るスクリプトによって作成されたと思います。実際、そのファイルを取得するには、HTML フォームにいくつかのパラメーター (月や年など) を入力する必要があります。curl を使用してサーバーにログインし、フォームに入力する値を送信しますが、応答をローカル ファイルに保存しようとすると、csv ファイルではなくダウンロード ページの html コードが表示されます。
これが私のコードです:
$fp = fopen(getcwd()."\patti.csv", "w+");
$ch = curl_init($urlPatti);//the url of the download page
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$postfields);//parameters to send
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$result = curl_exec ($ch);
$errorMsg=curl_error($ch);
curl_close ($ch);
fclose($fp);
これは私がページから受け取るヘッダーです:
HTTP/1.1 200 OK
Date: Thu, 22 Aug 2013 08:59:39 GMT
Server: Apache-Coyote/1.1
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Thu, 22 Aug 2013 08:59:39 GMT
Content-Type: text/html
Vary: Accept-Encoding
Via: 1.1 ido.venetolavoro.it
Transfer-Encoding: chunked