View Full Version : Download to local after ftp_get()

03-02-2008, 01:38 AM
I am using ftp_get to transfer a file from a secure location, to a temp location. (working)

Once at the temp location i need to have the file automatically download to the clients local machine. Something like a right click "save as" action. How do i do this? I'm thinking its done with headers but not sure.

My Current Code is below. Thanks for all responses.

// define some variables
$ftp_server = "";
$local_file = '/scratch1/test/'.$name;
$server_file = $name;

echo "server file: $server_file <br>";

$ftp_user_name = "5a515";
$ftp_user_pass = "m5n5o5";

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if ($login_result) echo "Successfully connected<br>";

//change directory
ftp_chdir($conn_id, "tts");
ftp_chdir($conn_id, "incoming");

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)){

echo "Successfully written to $local_file\n";


echo "<br>There was a problem\n";

// close the connection

03-02-2008, 09:17 AM
This is the solutions. Thanks to NogDog.

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)){
header('Content-Length: '. filesize($local_file));
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($local_file).'"');
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
readfile($local_file); // send the file
exit; // make sure no extraneous characters get appended