Home » Php » FTP upload via PHP form

FTP upload via PHP form

Posted by: admin July 12, 2020 Leave a comment


I want to upload a file via FTP upload in a form.

    <form enctype="multipart/form-data" action="upload_file.php" method="POST">
      <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
      Choose a file to upload: <input name="uploadedfile" type="file" /><br />
      <input type="submit" value="Upload File" />

Here is the PHP file:


$ftp_server = "xxx";
$ftp_username   = "xxx";
$ftp_password   =  "xxx";

// setup of connection
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server");

// login
if (@ftp_login($conn_id, $ftp_username, $ftp_password))
  echo "conectd as [email protected]$ftp_server\n";
  echo "could not connect as $ftp_username\n";

$file = $_FILES["file"]["name"];
$remote_file_path = "/home/www/lifestyle69/import/".$file;
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII);
echo "\n\nconnection closed";


The FTP connection connects successfully but the file is nowhere.

Can anybody help me?


How to&Answers:

Because you have <input name="uploadedfile" type="file" />:

$file = $_FILES["file"]["name"]; // wrong
$file = $_FILES["uploadedfile"]["name"]; // right

Because you need the filename of the temporary copy stored by PHP, which exists on the server:

ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"],
        FTP_ASCII); // right

Refer to the PHP documentation for more information about $_FILES.


Are you sure that the folder you are uploading to has the correct permissions? Try chmoding it to 777 and see if that works.


The file is stored on server with temporary name, so when you try uploading $_FILES['file']['name'], it fails, because file with such name does not exist. Instead you should call ftp_put() with $_FILES['file']['tmp_name']

It’s explained a little better here