Вытягивая мои волосы немного здесь. Все, что я хочу сделать, это иметь форму HTML, а затем PHP для загрузки выбранного файла в определенный каталог на FTP-сервере, но ничего не работает корректно.
Вот html-форма:
<form action="" enctype="multipart/form-data" method="post"> <input name="file" type="file" /> <input name="submit" type="submit" value="Upload File" /> </form>
И вот ниже PHP (в том же файле):
<?php $ftp_server = "myftp.co.uk"; $ftp_user_name = "myusername"; $ftp_user_pass = "mypass"; $destination_file = "/public_html/my/directory/"; $source_file = $_POST['file']['tmp_name']; // set up basic connection $conn_id = ftp_connect($ftp_server); ftp_pasv($conn_id, true); // login with username and password $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"; exit; } else { echo "Connected to $ftp_server, for user $ftp_user_name"; } // upload the file $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"; } // close the FTP stream ftp_close($conn_id); ?>
Кажется, что подключается к FTP нормально, но не загружается – не удалось. Я предполагаю, что это связано с тем, как я обрабатываю файл, который будет загружен ..?
Кроме того, пока я здесь, как установить имя файла, который был загружен как переменная?
Измените свой код здесь
$source_file = $_FILES['file']['tmp_name'];
Здесь я изменил $ _POST на $ _FILES ….
Похоже, что с кодом выше, но FTP-пассивной командой ftp_pasv ($ conn_id, true); должен быть после ftp_login, иначе он не будет работать. Вы можете получить такие ошибки: ftp_put (): я не буду открывать соединение с 172.xx.xx.xx (только для xx.xxx.xxx.xxx)
<?php $ftp_server = "your server or host"; $ftp_user_name = "username"; $ftp_user_pass = "password"; $ftp_port = "port"; $destination_file = "/public_html/my/directory/"; $source_file = $_FILES['file']['tmp_name']; // set up basic connection $conn_id = ftp_connect($ftp_server,$ftp_port); // login with username and password $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // ftp passive cmd ftp_pasv($conn_id, true); // check connection if ((!$conn_id) || (!$login_result)) { echo "FTP connection has failed!"; echo "Attempted to connect to $ftp_server for user $ftp_user_name"; exit; } else { echo "Connected to $ftp_server, for user $ftp_user_name"; } // upload the file $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"; } // close the FTP stream ftp_close($conn_id); ?>