0
votes

I try to upload a file in C:\data\image.jpg to my ftp server (000webhost)

I use the code as follows

   <?php
    // FTP access parameters
    $host = 'nana.host56.com';
    $usr = 'a4491289';
    $pwd = '+++';

    // file to move:
    $local_file = 'C:\data\image.jpg';
    $ftp_path = '/public_html/';

    // connect to FTP server (port 21)
    $conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");


    // send access parameters
    ftp_login($conn_id, $usr, $pwd) or die("Cannot login");

    // turn on passive mode transfers (some servers need this)
    // ftp_pasv ($conn_id, true);

    // perform file upload
    $upload = ftp_put($conn_id, $ftp_path, $local_file, FTP_ASCII);

    // check upload status:
    print (!$upload) ? 'Cannot upload' : 'Upload complete';
    print "\n";

    /*
    ** Chmod the file (just as example)
    */

    // If you are using PHP4 then you need to use this code:
    // (because the "ftp_chmod" command is just available in PHP5+)
    if (!function_exists('ftp_chmod')) {
       function ftp_chmod($ftp_stream, $mode, $filename){
            return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename));
       }
    }

    // try to chmod the new file to 666 (writeable)
    if (ftp_chmod($conn_id, 0666, $ftp_path) !== false) {
        print $ftp_path . " chmoded successfully to 666\n";
    } else {
        print "could not chmod $file\n";
    }


// close the FTP stream
ftp_close($conn_id);
?>

and it display Warning: ftp_put(C:\data\image.jpg) [function.ftp-put]: failed to open stream: No such file or directory /home/a4491289/public_html/upload.php

Is there something wrong with the file path and the local file? Thank you very much.

1

1 Answers

0
votes

try using ftp_chdir to the $ftp_dir before uploading the file and in the remote path use the file name you want to upload. ie:

ftp_chrdir('/public_html/');
ftp_put($con, 'ftp_image.jpg', 'real_image.jpg', FTP_ASCII);

Or you can try to supply the full path of the destination file and not just '/public_html/'.

Take a look at the example at: http://php.net/manual/en/function.ftp-put.php