I want to upload a file via FTP upload in a form.
<html>
<body>
<form enctype="multipart/form-data" action="upload_file.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>
Here is the PHP file:
<?php
$ftp_server = "xxx";
$ftp_username = "xxx";
$ftp_password = "xxx";
// setup of connection
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server");
// login
if (@ftp_login($conn_id, $ftp_username, $ftp_password))
{
echo "conectd as $ftp_username@$ftp_server\n";
}
else
{
echo "could not connect as $ftp_username\n";
}
$file = $_FILES["file"]["name"];
$remote_file_path = "/home/www/lifestyle69/import/".$file;
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII);
ftp_close($conn_id);
echo "\n\nconnection closed";
?>
The FTP connection connects successfully but the file is nowhere.
Can anybody help me?
Thanks!
Because you have <input name="uploadedfile" type="file" />
:
$file = $_FILES["file"]["name"]; // wrong
$file = $_FILES["uploadedfile"]["name"]; // right
Because you need the filename of the temporary copy stored by PHP, which exists on the server:
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"],
FTP_ASCII); // right
Refer to the PHP documentation for more information about $_FILES.
Are you sure that the folder you are uploading to has the correct permissions? Try chmoding it to 777 and see if that works.
The file is stored on server with temporary name, so when you try uploading $_FILES['file']['name']
, it fails, because file with such name does not exist. Instead you should call ftp_put()
with $_FILES['file']['tmp_name']
It's explained a little better here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With