I'm trying to use php to post variables to another php on a remote server and on the file at the remote server I want to read the file and force its download. The file on the remote server is not on a public folder, that's why I need to call the file first, so it authenticates and get the protected file.
Everything works, but I don't get any file back.
At the remote PHP I'm using standards readfile and headers to download a file.
I think maybe the problem is with the CURL setup, I'm using the standard CURL calls is there any specific header or setup I need to use when I call CURL to have the file downloaded?
This is the CURL i'm using
$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);
Where $postFields contain the variables to authenticate and confirm the file on the other server.
On the other server the php after authenticating does the normal force download:
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);
Thanks!
EDIT: Hi, I believe I found the issue. The problem is that when I call through .$post on the jquery the local server php, the curl interrupts the ajax call
$.post('local.php', $(this).serialize(), function(data){
alert(data);
}
}, "json").fail(function() {
alert('error');
});
So I'll have to figure it out how to call through the jquery the local.php without breaking the process. Thanks for your help!