Download to local after ftp_get()

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
cesarcesar
Forum Contributor
Posts: 111
Joined: Mon Oct 18, 2004 3:28 pm

Download to local after ftp_get()

Post by cesarcesar »

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.

Code: Select all

 
// define some variables
$ftp_server = "123.45.67.890";
$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";
 
}else{
 
    echo "<br>There was a problem\n";
}
 
// close the connection
ftp_close($conn_id);
 
 
cesarcesar
Forum Contributor
Posts: 111
Joined: Mon Oct 18, 2004 3:28 pm

Re: Download to local after ftp_get()

Post by cesarcesar »

This is the solutions. Thanks to NogDog.

Code: Select all

 
// 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
}
 
Post Reply