View Full Version : ftp_put() successfull but with a problem

08-07-2007, 09:58 AM
Hi, i used the following code to upload large files ranging 1-50 MB..the problem is i tried uploading a file of size 1.78 MB and it worked..then i tried uploading a file 2.9 MB and it didn't work..then i tried a uploading a file of size 2.18 MB and it also didnt work..by didnt work i mean that when checking the directory online, there is a file with the name of the uploaded file but its size is 0 bytes!!...i mean the uploading is fine, but the size is the problem..
the upload_max_filesize is set to 60MB just to make sure in wont cause a problem so im pretty sure that's not my problem..can anyone help?...

$ftp_server = "//ftp server";
$conn_id = ftp_connect($ftp_server);

// login with username and password
$ftp_user_name = "//username";
$ftp_user_pass = "//password";

//$web_location is needed for the file_exists function, the directories used by FTP
//are not visible to it will will always return not found.
$local_file_name = $_FILES['directory']['name'];//"file.txt";
$source_file = $_FILES['directory']['tmp_name'];

//build a fully qualified (FTP) path name where the file will reside

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
echo "FTP connection has failed!";
echo "Attempted to connect to $ftp_server for user $ftp_user_name";
} else {
echo "Connected to $ftp_server, for user $ftp_user_name";
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

// check upload status
if (!$upload) {
echo "FTP upload has failed!";
} else {
echo "Uploaded $source_file to $ftp_server as $destination_file";

//use ftp_site to change mode of the file
//this will allow it be visible by the world,
$ch=ftp_site($conn_id,"chmod 777 ".$destination_file);
// close the FTP stream
//verify file was written
if (file_exists($web_location))
echo "file was uploaded as $web_location";
echo "Could not create $web_location";
//end if

08-07-2007, 05:28 PM
Your code blindly executes the ftp logic without ever checking if the upload was successful. I recommend adding some error checking, error reporting, and error recovery logic to your code by checking the $_FILES['directory']['error'] element and taking appropriate action depending on the value - http://www.php.net/manual/en/features.file-upload.errors.php