2016-06-30 25 views
0

php cURLライブラリを使用して作成されたhttp要求の生の添付ファイルを取得しようとしています。今、私はhtmlの応答を取得しますが、添付ファイルは取得しません。PHP cURLライブラリを使用してhttp応答ヘッダーを使用して添付ファイルを取得する方法

非常によく似た質問hereは、cURLオプション-jを使用しています。私はPHPのcURLライブラリで同等のset_optを見つけることができません。

ブラウザでリクエストすると、ヘッダー情報で目的の添付ファイルが参照され、ブラウザは自動的にダウンロードすることを知っています。私のスクリプトでは、添付ファイルの生データを変数にロードするだけで済みます。

添付ファイルのデータをphpの変数にロードするにはどうすればよいですか?

リモートサーバからのヘッダの応答:

Cache-Control:must-revalidate, post-check=0, pre-check=0 
Content-Disposition:attachment; filename=exel_file.xls 
Content-Length:65 
Content-Transfer-Encoding:binary 
Content-Type:application/download 
Date:Thu, 30 Jun 2016 15:12:05 GMT 
Expires:Mon, 26 Jul 1997 05:00:00 GMT 
Last-Modified:Thu, 30 Jun 2016 16:33:14 GMT 
Pragma:public 
Server:Microsoft-IIS/7.5 
X-Powered-By:PHP/5.2.17 

私のPHPのcURLの要求:

$url = "https://subdomain.example.com?parameter=1"; 
$post = "post1=false&". 
     "post2=&". 
     "post3=false&". 
     "post4=&". 
     "post5=&". 
     "post6=1243123421"; 

$ch = curl_init($url); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookieFile); 
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookieFile); 
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
$html = curl_exec($ch); 

私はすでにhttps://subdomain.example.com/exel_file.xlsにして無駄に直接exel_file.xlsにアクセスしようとしました。

更新: 最終的にChromeデベロッパーツールで見つけたときにファイルに直接アクセスできました。私は "doc"へのネットワークレスポンスをフィルタリングし、添付ファイルに結び付けられたリクエストを見つけました。ファイルはhttps://subdomain.example.com/exel_file.xlsの代わりにhttps://example.com/exel_file.xlsにありました。

答えて

0

CURLOPT_BINARYTRANSFERをTRUEに設定し、コンテンツタイプを設定します。

<?php 

$url = "http://slackbuilds.org/slackbuilds/13.37/multimedia/umplayer.tar.gz"; 
$opts = array(
    CURLOPT_URL =>$url, 
    CURLINFO_CONTENT_TYPE => "text/xml", 
    CURLOPT_BINARYTRANSFER => TRUE, 
    CURLOPT_RETURNTRANSFER => TRUE 
); 

$ch = curl_init(); 
curl_setopt_array($ch, $opts); 
$data = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

header("Content-Type: application/x-gzip"); 
header("Content-disposition: attachment; filename=zipfile.tar.gz"); 

echo $data; 
?> 

あなたは、私は、ブラウザでファイルをダウンロードしたい場合だろう示して何このヘルプ

+0

番号を行います。添付ファイルを変数にロードしようとしています。私が何をしようとしているのかというと、ポイント設定のヘッダはありません。あなたが提供するcURLのオプトをテストしましたが、結果を変更しません。しかし、それを見ていただきありがとうございます。 –

関連する問題