Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uploading file through FTP using PHP

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?

like image 828
Paul Avatar asked Dec 02 '10 12:12

Paul


People also ask

What is FTP PHP?

PHP FTP Introduction The FTP functions give client access to file servers through the File Transfer Protocol (FTP). The FTP functions are used to open, login and close connections, as well as upload, download, rename, delete, and get information on files from file servers.


4 Answers

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.

like image 140
Linus Kleen Avatar answered Sep 18 '22 16:09

Linus Kleen


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); 
like image 20
Shakti Singh Avatar answered Sep 18 '22 16:09

Shakti Singh


How about FTP upload via Curl? (Note: you can also use curl for SFTP, FTPS)

<?php

$ch = curl_init();
$localfile = '/path/to/file.zip';
$remotefile = 'filename.zip';
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, 'ftp://ftp_login:[email protected]/'.$remotefile);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec ($ch);
$error_no = curl_errno($ch);
curl_close ($ch);
if ($error_no == 0) {
    $error = 'File uploaded succesfully.';
} else {
    $error = 'File upload error.';
}

?>
like image 43
ethanpil Avatar answered Sep 19 '22 16:09

ethanpil


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");
like image 28
User Avatar answered Sep 20 '22 16:09

User