Я хочу загрузить файл через FTP-загрузку в форме.
<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>
Вот файл PHP:
<?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"; ?>
Соединение FTP подключается успешно, но файл нигде.
Кто-нибудь может мне помочь?
Благодаря!
Поскольку у вас есть <input name="uploadedfile" type="file" />
:
$file = $_FILES["file"]["name"]; // wrong $file = $_FILES["uploadedfile"]["name"]; // right
Поскольку вам нужно имя файла временной копии, хранящейся в PHP, которая существует на сервере:
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
Дополнительную информацию о $ _FILES см. В документации по PHP .
Вы уверены, что папка, которую вы загружаете, имеет правильные разрешения? Попробуйте изменить его на 777 и посмотрите, работает ли это.
Файл хранится на сервере с временным именем, поэтому при попытке загрузки $_FILES['file']['name']
он терпит неудачу, потому что файл с таким именем не существует. Вместо этого вы должны вызвать ftp_put()
с помощью $_FILES['file']['tmp_name']
Здесь объясняется немного лучше