« Return

Upload files to a server via FTP using PHP


PHP
<?php
if (array_key_exists('upload', $_POST)) {
    $conn = ftp_connect("ftp.mydomain.com") or die("could not connect");
    ftp_login($conn, "example@domain.com", "password");

    $path = dirname($_SERVER['PHP_SELF']);
    $fullpath = ftp_chdir($conn, "server-path/domain.com/html/" . $path . "/directory");
    $localfile = $_FILES['thefile']['tmp_name'];
    
    $file = strtolower(str_replace(' ', '-', $_FILES['thefile']['name']));
    $filename = date('Y-m-d-His') . '-' . $file;

    $upload = ftp_put($conn, $filename, $localfile, FTP_BINARY);

    // check upload status
    /* ========================================================================================== */
    if ($upload) { $feedback = 'File has been uploaded'; }
    else { $feedback = 'No file was uploaded, please select a file to proceed.'; }

    // save file path and file-name to cookies for later use
    /* ========================================================================================== */
    $uploaded_file = 'directory/' . $filename;
    if (isset($_FILES['thefile'])) {
        setcookie("uploaded_file", $uploaded_file, time()+600, "/"); // exp 10 min
        setcookie("filename", $filename, time()+600, "/"); // exp 10 min
    }

    ftp_close($conn);
} 
?>
HTML
 	
<form action="<?php echo basename(__FILE__); ?>" enctype="multipart/form-data" method="post">
  <fieldset>
    <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo (1048576*10); ?>" />
    <input type="file" name="thefile" />
    <input type="hidden" name="uploaded_file" value="<?php echo $uploaded_file; ?>" />
    <input type="hidden" name="filename" value="<?php echo $filename; ?>" />
    <input type="submit" name="upload" value="upload" />
  </fieldset>
</form>
<?php echo $feedback; ?>