我想用php來發布變量到遠程服務器上的另一個php和遠程服務器上的文件我想讀取該文件並強制其下載。遠程服務器上的文件不在公用文件夾中,這就是爲什麼我需要首先調用該文件,以便驗證並獲取受保護的文件。PHP - 使用CURL來驗證和下載遠程文件
一切正常,但我沒有得到任何文件。
在遠程PHP我使用標準的讀取文件和標題來下載文件。
我想也許問題是與CURL設置,我使用標準CURL調用是否有任何特定的標題或設置我需要使用時,我打電話CURL有文件下載?
這是我使用
$request = curl_init();
curl_setopt($request, CURLOPT_URL, $postURL);
curl_setopt($request, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($request, CURLOPT_VERBOSE, 0);
curl_setopt($request, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($request, CURLOPT_POST, 1);
curl_setopt($request, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($request);
curl_close($request);
其中$ postFields包含變量進行身份驗證並確認其他服務器上的文件捲曲。
在其他的服務器認證後的PHP並正常力下載:
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="'.$newFileName.'"');
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($path));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Expires: 0');
readfile($path);
謝謝!
編輯: 嗨,我相信我找到了問題。問題是,當我叫過。$張貼在jQuery的本地服務器的PHP,捲曲中斷Ajax調用
$.post('local.php', $(this).serialize(), function(data){
alert(data);
}
}, "json").fail(function() {
alert('error');
});
所以我必須弄清楚如何通過jQuery的地方打電話。 PHP沒有打破過程。 感謝您的幫助!
請添加您已獲得的相關代碼(特別是捲曲初始化,即使它不工作)。這樣我們就可以更好地理解你想要達到的目標/問題所在。 – dhh
嗨@dhh我更新了代碼。謝謝! – Kitara
@Kitara,你如何獲得'$ newFileName'和'$ path'變量?如果你把一個'print_r($ response)',輸出是什麼? –