2012-12-12 4 views
0

Nous exportons des données en tant que csv, et ce qui déclenche cela avec une soumission jQuery ajax formulaire. Je peux obtenir les bases de travail, ce que je ne peux pas obtenir est de forcer le téléchargement du fichier après son écrite. PHPImpossible de forcer le téléchargement - 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); 

?> 

Comme toujours, un conseil est très apprécié. TY.

+0

Quel est le message d'erreur? Comment avez-vous déterminé si vous avez une autorisation d'écriture pour ce fichier ou répertoire? – mario

+0

Avez-vous vérifié le dossier 'directory /' avoir des droits d'écriture? Pourrait être PHP ne peut pas avoir l'autorisation d'écriture pour écrire un fichier. –

+0

J'ai ajouté l'autorisation "0777" dans fireFTP> Propriétés –

Répondre

0

Espérons que cela peut sauver quelqu'un le mal de tête qu'il m'a donné. Voici comment faire (au moins dans mon cas):

<?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; 
?> 
Questions connexes