2012-12-12 170 views
0

我們將一些數據導出爲csv,並通過jQuery ajax表單提交來觸發。我可以得到它的工作基礎,我似乎無法得到的是在寫入文件後強制下載文件。 PHP無法強制下載 - PHP curl

<?php 
session_start(); 
echo $_SESSION['payerEmail']; 
echo $_SESSION['password']; 
$url = 'http://www.ninjatrader-support2.com/sugar/FXCMLicense.php'; 
$FXCMAction = $_REQUEST["FXCMAction"]; 
$payerEmail = $_SESSION['payerEmail']; 
$password = $_SESSION['password']; 
$fields = array(
'FXCMAction'=>urlencode($FXCMAction), 
'payerEmail'=>urldecode($payerEmail), 
'password'=>urldecode($password) 
); 
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
$fields_string = rtrim($fields_string,'& '); 

$ch = curl_init($url); 
session_write_close(); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
$directory='/home/ninja002/public_html/FXCMReports/'; 
$filename = 'XCMLicense.csv'; 
$handle = fopen($directory.$filename, 'w'); 
fwrite($handle, $output); 
echo $output; 
curl_close($ch); 

?> 

一如既往,任何意見,非常感謝。 TY。

+0

什麼是錯誤信息?你如何確定你是否擁有該文件或目錄的寫入權限? – mario

+0

您是否檢查過'目錄/'文件夾是否有寫入權限?可能PHP可能沒有寫入權限來寫入文件。 –

+0

我在fireFTP>屬性 –

回答

0

希望這可以幫助別人解除給我的頭痛。下面是如何做到這一點(至少在我的情況下):

<?php 
    session_start(); 
    $url = 'http://www.remotesite/script.php'; 
    $Foo = $_REQUEST["Foo"]; 
    $Bar = $_SESSION['Bar']; 
    $password = $_SESSION['password']; 
    $fields = array(
     'Foo'=>urlencode($Foo), 
     'Bar'=>urldecode($Bar), 
     'password'=>urldecode($password) 
    ); 
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } 
    $fields_string = rtrim($fields_string,'& '); 
    $ch = curl_init($url); 
    session_write_close(); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $output = curl_exec($ch); 
    curl_close($ch); 
    $directory='/home/usr/public_html/Directory/'; 
    $filename = 'AwesomeData.csv'; 
    $handle = fopen($directory.$filename, 'w'); 
    fwrite($handle, $output); 
    header('Content-type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename="AwesomeData.csv"'); 
    echo $output; 
?>