By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
426,012 Members | 988 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 426,012 IT Pros & Developers. It's quick & easy.

PHP File Upload Fails

P: n/a
Hello,

I am trying to do a FTP file upload which works fine on my localhost but on
my ISP server it fails. I can't seem to find where I can go to find the
specific cause of the failure. In both cases the file is being transmitted
to the same FTP server and using the same PHP script so it shouldn't be a
file size or login credentials problem. Could someone please help me out and
give me some ideas what is wrong.

I would really appreciate any help someone could provide as I've spent many
hours on this looking for answers. I've contacted my ISP and they've looked
at everything and also do not have an answer.

Thanks a lot,

Vic

Here is the PHP form and script I'm using:

Form:

<form enctype="multipart/form-data" action="fileupload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
Choose a file to upload: <input name="uploadedfile" size="60" type="file" />
<input type="submit" name="continue" value="Continue" />
</form>
PHP:

// set up basic connection
$ftp_server = "ftp.showmyhorse.com";
$conn_id = ftp_connect($ftp_server);

// login with username and password
$ftp_user_name = "XXX";
$ftp_user_pass = "XXX";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
$_SESSION['message_new']= "Attempted to connect to
$ftp_server for user $ftp_user_name has failed! ";
break;
} else {
//echo "Connected to $ftp_server, for user $ftp_user_name";
}

// upload the file
$source_file = $_POST["uploadedfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );
$ShowID = $_SESSION['ShowID'];
$destination_file = $ShowID . "_" . $filename;

echo "source_file: $source_file <br>";
echo "filename : $filename <br>";
echo "destination_file: $destination_file<br>";

$upload = ftp_put($conn_id, $destination_file, $source_file,
FTP_BINARY);

// check upload status
if (!$upload) {
$_SESSION['message_new']= "FTP upload has failed; Contact
su*****@showmyhorse.com!";

} else {
//echo "Uploaded $source_file to $ftp_server as
$destination_file";
$_SESSION['message_new']="Uploaded $filename as
$destination_file";
}

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

# Now add the schedule name to the database
$connection = mysql_pconnect($host,$user,$password)
or die ("Couldn't connect to server.");
$db = mysql_select_db($database, $connection)
or die ("Couldn't select database.");

$query = "UPDATE ShowInfo SET ShowSchedule = '$destination_file'
WHERE ShowID=$ShowID";
$result = mysql_query($query)
or die("Problems encountered adding schedule information to
database
Query: $query <brdatabase: $database <br>");

Dec 2 '06 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Hi Vic --

PHP stores information about file uploads in the $_FILES superglobal
array, not $_POST. Using the proper array should solve your problem.

Geoffrey
Vic Spainhower wrote:
Hello,

I am trying to do a FTP file upload which works fine on my localhost but on
my ISP server it fails. I can't seem to find where I can go to find the
specific cause of the failure. In both cases the file is being transmitted
to the same FTP server and using the same PHP script so it shouldn't be a
file size or login credentials problem. Could someone please help me out and
give me some ideas what is wrong.

I would really appreciate any help someone could provide as I've spent many
hours on this looking for answers. I've contacted my ISP and they've looked
at everything and also do not have an answer.

Thanks a lot,

Vic

Here is the PHP form and script I'm using:

Form:

<form enctype="multipart/form-data" action="fileupload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
Choose a file to upload: <input name="uploadedfile" size="60" type="file" />
<input type="submit" name="continue" value="Continue" />
</form>
PHP:

// set up basic connection
$ftp_server = "ftp.showmyhorse.com";
$conn_id = ftp_connect($ftp_server);

// login with username and password
$ftp_user_name = "XXX";
$ftp_user_pass = "XXX";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
$_SESSION['message_new']= "Attempted to connect to
$ftp_server for user $ftp_user_name has failed! ";
break;
} else {
//echo "Connected to $ftp_server, for user $ftp_user_name";
}

// upload the file
$source_file = $_POST["uploadedfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );
$ShowID = $_SESSION['ShowID'];
$destination_file = $ShowID . "_" . $filename;

echo "source_file: $source_file <br>";
echo "filename : $filename <br>";
echo "destination_file: $destination_file<br>";

$upload = ftp_put($conn_id, $destination_file, $source_file,
FTP_BINARY);

// check upload status
if (!$upload) {
$_SESSION['message_new']= "FTP upload has failed; Contact
su*****@showmyhorse.com!";

} else {
//echo "Uploaded $source_file to $ftp_server as
$destination_file";
$_SESSION['message_new']="Uploaded $filename as
$destination_file";
}

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

# Now add the schedule name to the database
$connection = mysql_pconnect($host,$user,$password)
or die ("Couldn't connect to server.");
$db = mysql_select_db($database, $connection)
or die ("Couldn't select database.");

$query = "UPDATE ShowInfo SET ShowSchedule = '$destination_file'
WHERE ShowID=$ShowID";
$result = mysql_query($query)
or die("Problems encountered adding schedule information to
database
Query: $query <brdatabase: $database <br>");
Dec 3 '06 #2

P: n/a
Geoffrey,

Thanks for the reply. The FILES array doesn't contain the file name to be
uploaded for some reason but the POST array does. What might be the reason
for this?? What I don't understand is that since there is a file name passed
to the FTP put (even though it's in the POST array) why wouldn't htat work?

$target_path = $target_path . basename(
$_FILES['userfile']['name']);

** The following statement when executed after the file is selected for
upload shows nothing ***
echo "target Path: $target_path <br>";

** The following statement when executed after the file is selected for
upload contains the name of the file ***
$source_file = $_POST["userfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );

Thanks Geoffrey,

Vic

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@l12g2000cwl.googlegr oups.com...
Hi Vic --

PHP stores information about file uploads in the $_FILES superglobal
array, not $_POST. Using the proper array should solve your problem.

Geoffrey
Vic Spainhower wrote:
>Hello,

I am trying to do a FTP file upload which works fine on my localhost but
on
my ISP server it fails. I can't seem to find where I can go to find the
specific cause of the failure. In both cases the file is being
transmitted
to the same FTP server and using the same PHP script so it shouldn't be a
file size or login credentials problem. Could someone please help me out
and
give me some ideas what is wrong.

I would really appreciate any help someone could provide as I've spent
many
hours on this looking for answers. I've contacted my ISP and they've
looked
at everything and also do not have an answer.

Thanks a lot,

Vic

Here is the PHP form and script I'm using:

Form:

<form enctype="multipart/form-data" action="fileupload.php"
method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
Choose a file to upload: <input name="uploadedfile" size="60" type="file"
/>
<input type="submit" name="continue" value="Continue" />
</form>
PHP:

// set up basic connection
$ftp_server = "ftp.showmyhorse.com";
$conn_id = ftp_connect($ftp_server);

// login with username and password
$ftp_user_name = "XXX";
$ftp_user_pass = "XXX";
$login_result = ftp_login($conn_id, $ftp_user_name,
$ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
$_SESSION['message_new']= "Attempted to connect to
$ftp_server for user $ftp_user_name has failed! ";
break;
} else {
//echo "Connected to $ftp_server, for user
$ftp_user_name";
}

// upload the file
$source_file = $_POST["uploadedfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );
$ShowID = $_SESSION['ShowID'];
$destination_file = $ShowID . "_" . $filename;

echo "source_file: $source_file <br>";
echo "filename : $filename <br>";
echo "destination_file: $destination_file<br>";

$upload = ftp_put($conn_id, $destination_file, $source_file,
FTP_BINARY);

// check upload status
if (!$upload) {
$_SESSION['message_new']= "FTP upload has failed; Contact
su*****@showmyhorse.com!";

} else {
//echo "Uploaded $source_file to $ftp_server as
$destination_file";
$_SESSION['message_new']="Uploaded $filename as
$destination_file";
}

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

# Now add the schedule name to the database
$connection = mysql_pconnect($host,$user,$password)
or die ("Couldn't connect to server.");
$db = mysql_select_db($database, $connection)
or die ("Couldn't select database.");

$query = "UPDATE ShowInfo SET ShowSchedule = '$destination_file'
WHERE ShowID=$ShowID";
$result = mysql_query($query)
or die("Problems encountered adding schedule information to
database
Query: $query <brdatabase: $database <br>");

Dec 3 '06 #3

P: n/a
Hmmmm...well, I'm stumped. I've never seen this behavior before and
don't really know how to explain it. The POST array should contain the
values of the two input elements in your HTML file (MAX_FILE_SIZE and
your submit button). The FILES array should contain the file
information. Even with uploads disabled in php.ini, the POST array
contents shouldn't change. For curiousity's sake, could you post the
output of the print_r function for POST and FILES, please?
Vic Spainhower wrote:
Geoffrey,

Thanks for the reply. The FILES array doesn't contain the file name to be
uploaded for some reason but the POST array does. What might be the reason
for this?? What I don't understand is that since there is a file name passed
to the FTP put (even though it's in the POST array) why wouldn't htat work?

$target_path = $target_path . basename(
$_FILES['userfile']['name']);

** The following statement when executed after the file is selected for
upload shows nothing ***
echo "target Path: $target_path <br>";

** The following statement when executed after the file is selected for
upload contains the name of the file ***
$source_file = $_POST["userfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );

Thanks Geoffrey,

Vic

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@l12g2000cwl.googlegr oups.com...
Hi Vic --

PHP stores information about file uploads in the $_FILES superglobal
array, not $_POST. Using the proper array should solve your problem.

Geoffrey
Vic Spainhower wrote:
Hello,

I am trying to do a FTP file upload which works fine on my localhost but
on
my ISP server it fails. I can't seem to find where I can go to find the
specific cause of the failure. In both cases the file is being
transmitted
to the same FTP server and using the same PHP script so it shouldn't be a
file size or login credentials problem. Could someone please help me out
and
give me some ideas what is wrong.

I would really appreciate any help someone could provide as I've spent
many
hours on this looking for answers. I've contacted my ISP and they've
looked
at everything and also do not have an answer.

Thanks a lot,

Vic

Here is the PHP form and script I'm using:

Form:

<form enctype="multipart/form-data" action="fileupload.php"
method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
Choose a file to upload: <input name="uploadedfile" size="60" type="file"
/>
<input type="submit" name="continue" value="Continue" />
</form>
PHP:

// set up basic connection
$ftp_server = "ftp.showmyhorse.com";
$conn_id = ftp_connect($ftp_server);

// login with username and password
$ftp_user_name = "XXX";
$ftp_user_pass = "XXX";
$login_result = ftp_login($conn_id, $ftp_user_name,
$ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
$_SESSION['message_new']= "Attempted to connect to
$ftp_server for user $ftp_user_name has failed! ";
break;
} else {
//echo "Connected to $ftp_server, for user
$ftp_user_name";
}

// upload the file
$source_file = $_POST["uploadedfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );
$ShowID = $_SESSION['ShowID'];
$destination_file = $ShowID . "_" . $filename;

echo "source_file: $source_file <br>";
echo "filename : $filename <br>";
echo "destination_file: $destination_file<br>";

$upload = ftp_put($conn_id, $destination_file, $source_file,
FTP_BINARY);

// check upload status
if (!$upload) {
$_SESSION['message_new']= "FTP upload has failed; Contact
su*****@showmyhorse.com!";

} else {
//echo "Uploaded $source_file to $ftp_server as
$destination_file";
$_SESSION['message_new']="Uploaded $filename as
$destination_file";
}

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

# Now add the schedule name to the database
$connection = mysql_pconnect($host,$user,$password)
or die ("Couldn't connect to server.");
$db = mysql_select_db($database, $connection)
or die ("Couldn't select database.");

$query = "UPDATE ShowInfo SET ShowSchedule = '$destination_file'
WHERE ShowID=$ShowID";
$result = mysql_query($query)
or die("Problems encountered adding schedule information to
database
Query: $query <brdatabase: $database <br>");
Dec 3 '06 #4

P: n/a

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@f1g2000cwa.googlegro ups.com...
Hmmmm...well, I'm stumped. I've never seen this behavior before and
don't really know how to explain it. The POST array should contain the
values of the two input elements in your HTML file (MAX_FILE_SIZE and
your submit button). The FILES array should contain the file
information. Even with uploads disabled in php.ini, the POST array
contents shouldn't change. For curiousity's sake, could you post the
output of the print_r function for POST and FILES, please?

Hi Geoffrey,

yea me to! here's the print_r stuff showing userfile in the POST array. Why
would it matter to the FTP put which array contains the file name to be
uploaded? I could see that being a problem if it was an HTTP upload. Since
it works on my localhost going to the same FTP server I would think the
problem would not be in the PHP script. Here's also the php.ini info

FILES Array:
Array ( )
POST Array:
Array ( [MAX_FILE_SIZE] =30000 [userfile] =C:\\Client Databases\\Hughes
Supply\\Hughes_Projects.NET.zip [continue] =Send File )

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
file_uploads = On ; Whether to allow HTTP file uploads
upload_tmp_dir = ; temporary directory for HTTP uploaded
files (will use system default if not specified)
upload_max_filesize = 2M ; Maximum allowed size for uploaded files
Thanks,

Vic
Dec 3 '06 #5

P: n/a
Geoffrey,

I do need to do an HTTP upload and NOT FTP because it will look for the file
on the C drive on the server instead of the user's local drive. So maybe
once we figure out why the file information is not in the FILES array it
will work.

Thanks,

Vic

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@f1g2000cwa.googlegro ups.com...
Hmmmm...well, I'm stumped. I've never seen this behavior before and
don't really know how to explain it. The POST array should contain the
values of the two input elements in your HTML file (MAX_FILE_SIZE and
your submit button). The FILES array should contain the file
information. Even with uploads disabled in php.ini, the POST array
contents shouldn't change. For curiousity's sake, could you post the
output of the print_r function for POST and FILES, please?
Vic Spainhower wrote:
>Geoffrey,

Thanks for the reply. The FILES array doesn't contain the file name to be
uploaded for some reason but the POST array does. What might be the
reason
for this?? What I don't understand is that since there is a file name
passed
to the FTP put (even though it's in the POST array) why wouldn't htat
work?

$target_path = $target_path . basename(
$_FILES['userfile']['name']);

** The following statement when executed after the file is selected for
upload shows nothing ***
echo "target Path: $target_path <br>";

** The following statement when executed after the file is selected for
upload contains the name of the file ***
$source_file = $_POST["userfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );

Thanks Geoffrey,

Vic

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@l12g2000cwl.googleg roups.com...
Hi Vic --

PHP stores information about file uploads in the $_FILES superglobal
array, not $_POST. Using the proper array should solve your problem.

Geoffrey
Vic Spainhower wrote:
Hello,

I am trying to do a FTP file upload which works fine on my localhost
but
on
my ISP server it fails. I can't seem to find where I can go to find
the
specific cause of the failure. In both cases the file is being
transmitted
to the same FTP server and using the same PHP script so it shouldn't
be a
file size or login credentials problem. Could someone please help me
out
and
give me some ideas what is wrong.

I would really appreciate any help someone could provide as I've spent
many
hours on this looking for answers. I've contacted my ISP and they've
looked
at everything and also do not have an answer.

Thanks a lot,

Vic

Here is the PHP form and script I'm using:

Form:

<form enctype="multipart/form-data" action="fileupload.php"
method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
Choose a file to upload: <input name="uploadedfile" size="60"
type="file"
/>
<input type="submit" name="continue" value="Continue" />
</form>
PHP:

// set up basic connection
$ftp_server = "ftp.showmyhorse.com";
$conn_id = ftp_connect($ftp_server);

// login with username and password
$ftp_user_name = "XXX";
$ftp_user_pass = "XXX";
$login_result = ftp_login($conn_id, $ftp_user_name,
$ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
$_SESSION['message_new']= "Attempted to connect to
$ftp_server for user $ftp_user_name has failed! ";
break;
} else {
//echo "Connected to $ftp_server, for user
$ftp_user_name";
}

// upload the file
$source_file = $_POST["uploadedfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '',
$source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );
$ShowID = $_SESSION['ShowID'];
$destination_file = $ShowID . "_" . $filename;

echo "source_file: $source_file <br>";
echo "filename : $filename <br>";
echo "destination_file: $destination_file<br>";

$upload = ftp_put($conn_id, $destination_file, $source_file,
FTP_BINARY);

// check upload status
if (!$upload) {
$_SESSION['message_new']= "FTP upload has failed;
Contact
su*****@showmyhorse.com!";

} else {
//echo "Uploaded $source_file to $ftp_server as
$destination_file";
$_SESSION['message_new']="Uploaded $filename as
$destination_file";
}

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

# Now add the schedule name to the database
$connection = mysql_pconnect($host,$user,$password)
or die ("Couldn't connect to server.");
$db = mysql_select_db($database, $connection)
or die ("Couldn't select database.");

$query = "UPDATE ShowInfo SET ShowSchedule =
'$destination_file'
WHERE ShowID=$ShowID";
$result = mysql_query($query)
or die("Problems encountered adding schedule information
to
database
Query: $query <brdatabase: $database <br>");

Dec 3 '06 #6

P: n/a
Problem Solved - Duplicate form tag causing the File Array to not work.

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@f1g2000cwa.googlegro ups.com...
Hmmmm...well, I'm stumped. I've never seen this behavior before and
don't really know how to explain it. The POST array should contain the
values of the two input elements in your HTML file (MAX_FILE_SIZE and
your submit button). The FILES array should contain the file
information. Even with uploads disabled in php.ini, the POST array
contents shouldn't change. For curiousity's sake, could you post the
output of the print_r function for POST and FILES, please?
Vic Spainhower wrote:
>Geoffrey,

Thanks for the reply. The FILES array doesn't contain the file name to be
uploaded for some reason but the POST array does. What might be the
reason
for this?? What I don't understand is that since there is a file name
passed
to the FTP put (even though it's in the POST array) why wouldn't htat
work?

$target_path = $target_path . basename(
$_FILES['userfile']['name']);

** The following statement when executed after the file is selected for
upload shows nothing ***
echo "target Path: $target_path <br>";

** The following statement when executed after the file is selected for
upload contains the name of the file ***
$source_file = $_POST["userfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '', $source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );

Thanks Geoffrey,

Vic

"Geoffrey" <go***********@yahoo.comwrote in message
news:11**********************@l12g2000cwl.googleg roups.com...
Hi Vic --

PHP stores information about file uploads in the $_FILES superglobal
array, not $_POST. Using the proper array should solve your problem.

Geoffrey
Vic Spainhower wrote:
Hello,

I am trying to do a FTP file upload which works fine on my localhost
but
on
my ISP server it fails. I can't seem to find where I can go to find
the
specific cause of the failure. In both cases the file is being
transmitted
to the same FTP server and using the same PHP script so it shouldn't
be a
file size or login credentials problem. Could someone please help me
out
and
give me some ideas what is wrong.

I would really appreciate any help someone could provide as I've spent
many
hours on this looking for answers. I've contacted my ISP and they've
looked
at everything and also do not have an answer.

Thanks a lot,

Vic

Here is the PHP form and script I'm using:

Form:

<form enctype="multipart/form-data" action="fileupload.php"
method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="300000" />
Choose a file to upload: <input name="uploadedfile" size="60"
type="file"
/>
<input type="submit" name="continue" value="Continue" />
</form>
PHP:

// set up basic connection
$ftp_server = "ftp.showmyhorse.com";
$conn_id = ftp_connect($ftp_server);

// login with username and password
$ftp_user_name = "XXX";
$ftp_user_pass = "XXX";
$login_result = ftp_login($conn_id, $ftp_user_name,
$ftp_user_pass);

// check connection
if ((!$conn_id) || (!$login_result)) {
$_SESSION['message_new']= "Attempted to connect to
$ftp_server for user $ftp_user_name has failed! ";
break;
} else {
//echo "Connected to $ftp_server, for user
$ftp_user_name";
}

// upload the file
$source_file = $_POST["uploadedfile"];

$basename = preg_replace( '/^.+[\\\\\\/]/', '',
$source_file );
$filename = preg_replace( "/[^\w\.-]+/", "_", $basename );
$ShowID = $_SESSION['ShowID'];
$destination_file = $ShowID . "_" . $filename;

echo "source_file: $source_file <br>";
echo "filename : $filename <br>";
echo "destination_file: $destination_file<br>";

$upload = ftp_put($conn_id, $destination_file, $source_file,
FTP_BINARY);

// check upload status
if (!$upload) {
$_SESSION['message_new']= "FTP upload has failed;
Contact
su*****@showmyhorse.com!";

} else {
//echo "Uploaded $source_file to $ftp_server as
$destination_file";
$_SESSION['message_new']="Uploaded $filename as
$destination_file";
}

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

# Now add the schedule name to the database
$connection = mysql_pconnect($host,$user,$password)
or die ("Couldn't connect to server.");
$db = mysql_select_db($database, $connection)
or die ("Couldn't select database.");

$query = "UPDATE ShowInfo SET ShowSchedule =
'$destination_file'
WHERE ShowID=$ShowID";
$result = mysql_query($query)
or die("Problems encountered adding schedule information
to
database
Query: $query <brdatabase: $database <br>");

Dec 4 '06 #7

This discussion thread is closed

Replies have been disabled for this discussion.