PHP FTP上传功能

i have this function in PHP:

function UploadFileToFTP($local_path, $remote_path, $file, $filename) {
    global $settings;

    $remote_path = 'public_html/'.$remote_path;

    $ftp_server = $settings["IntegraFTP_H"];
    $ftp_user_name = $settings["IntegraFTP_U"];
    $ftp_user_pass = $settings["IntegraFTP_P"];

    //first save the file locally
    file_put_contents($local_path.$filename, $file);

    //login
    $conn_id = ftp_connect($ftp_server);
    ftp_pasv($conn_id, true); 
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

    // check connection
    if((!$conn_id) || (!$login_result)) { 
        echo "FTP connection has failed!";
    }

    //change directory
    ftp_chdir($conn_id, $remote_path);
    $upload = ftp_put($conn_id, $filename, $local_path.$filename, FTP_BINARY);

    // check upload status
    if(!$upload) { 
        echo "FTP upload has failed!";
    }
    // close the FTP stream 
    ftp_close($conn_id);
}

i call it here:

UploadFileToFTP('p/website/uploaded_media/', 'media/', $_FILES["file"]["tmp_name"], $filename);

the selected file is being moved into the local directory and also being uploaded to FTP however the file is becoming corrupt because it is not being uploaded correctly.

how can i get the file uploading properly?

Depending on what kind of file you're moving you may need to switch from FTP_BINARY to FTP_ASCII

http://forums.devshed.com/ftp-help-113/ftp_ascii-ftp_binary-59975.html

When uploading a file to PHP it stores the uploaded file in a temporary location, the location is stored in $_FILES["file"]["tmp_name"].

You are then passing that value into your UploadToFTP function as the variable $file.

Then you try to save a copy of the uploaded file:

//first save the file locally
file_put_contents($local_path.$filename, $file);

What this will do is write the string contained within $file (i.e. the path of the temp file) to your new location - but you want to write the content of the file.

Instead of using file_put_contents use move_uploaded_file:

move_uploaded_file($file, $local_path.$filename);