I'm curious how to upload file through FTP using PHP. Let's say I have upload form and user have uploaded a file. How to transfer the file [without moving from temp directory] to some FTP host using PHP?
jwueller
30k4 gold badges65 silver badges70 bronze badges
asked Dec 2, 2010 at 12:58
Here you go:
$ftp = ftp_connect[$host, $port, $timeout];
ftp_login[$ftp, $user, $pass];
$ret = ftp_nb_put[$ftp, $dest_file, $source_file, FTP_BINARY, FTP_AUTORESUME];
while [FTP_MOREDATA == $ret]
{
// display progress bar, or something
$ret = ftp_nb_continue[$ftp];
}
// all done :-]
Error handling omitted for brevity.
Please note: you have to have ext-ftp
installed and enabled.
Juljan
2,2611 gold badge15 silver badges20 bronze badges
answered Dec 2, 2010 at 13:03
Linus KleenLinus Kleen
32.9k11 gold badges89 silver badges99 bronze badges
1
Here is a code sample
$ftp_server="";
$ftp_user_name="";
$ftp_user_pass="";
$file = "";//tobe uploaded
$remote_file = "";
// 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];
// upload a file
if [ftp_put[$conn_id, $remote_file, $file, FTP_ASCII]] {
echo "successfully uploaded $file\n";
exit;
} else {
echo "There was a problem while uploading $file\n";
exit;
}
// close the connection
ftp_close[$conn_id];
answered Dec 2, 2010 at 13:06
Shakti SinghShakti Singh
81.9k20 gold badges132 silver badges150 bronze badges
2
How about FTP upload via Curl? [Note: you can also use curl for SFTP, FTPS]
answered Aug 2, 2016 at 19:40
ethanpilethanpil
2,4822 gold badges24 silver badges33 bronze badges
2
Here's a function to do it for you.
function uploadFTP[$server, $username, $password, $local_file, $remote_file]{
// connect to server
$connection = ftp_connect[$server];
// login
if [@ftp_login[$connection, $username, $password]]{
// successfully connected
}else{
return false;
}
ftp_put[$connection, $remote_file, $local_file, FTP_BINARY];
ftp_close[$connection];
return true;
}
Usage:
uploadFTP["127.0.0.1", "admin", "mydog123", "C:\\report.txt", "meeting/tuesday/report.txt"];
answered Aug 29, 2015 at 16:31
UserUser
3753 silver badges14 bronze badges
3
For anyone want to show a the upload progress while doing file transfers, this is a great library php-ftp-client to start :
The code
$interval = 1;
$ftp->asyncDownload['illustrations/assets.zip', 'assets.zip', function [$stat] use [$interval] {
ob_end_clean[];
ob_start[];
echo sprintf[
"speed : %s KB/%ss | percentage : %s%% | transferred : %s KB | second now : %s
",
$stat['speed'],
$interval,
$stat['percentage'],
$stat['transferred'],
$stat['seconds']
];
ob_flush[];
flush[];
}, true, $interval];
Result in the browser :
answered Aug 17, 2020 at 2:05
FTP password must be in single quote otherwise it will not accept special characters
$ftp_server="";
$ftp_user_name="";
$ftp_user_pass=''; // this is the right way
$file = "";//tobe uploaded
$remote_file = "";
answered Sep 21, 2018 at 9:12