Файл не загружается на FTP-сервер - PullRequest
1 голос
/ 28 февраля 2020

Я создал форму. В этой форме вы можете загрузить файл. Файл должен быть загружен на удаленный FTP-сервер. Подключение к удаленному FTP-серверу работает. Однако это не загружает файл. Я не знаю, как решить эту проблему. Когда я хочу загрузить, я получаю следующее сообщение: «Сбой загрузки по FTP!» . Это сообщение, которое я запрограммировал, чтобы показать, когда загрузка не работает. Нет ошибок.

Мой PHP код (на основе предыдущего вопроса о переполнении стека):

<?php
if ( empty( $_FILES['file'] ) ) {
    return;
}
$ftp_server = "ftp.myserver.nl";
$ftp_user_name = "myusername";
$ftp_user_pass = "mypass";
$destination_file = "/public_html/wp/wp-content/plugins/AbonneerProgrammas/Albums";
$source_file = $_FILES['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);
?>

Мой HTML код (на основе предыдущего вопроса о переполнении стека):

<html>
<body>
<form action="" enctype="multipart/form-data" method="post">
<input name="file" type="file"/>
<br>
<input name="submit" type="submit" value="Upload uw album" />
</form>
</body>
</html>

Я ожидаю, что при отправке формы файл будет передан по следующему пути: /public_html/wp/wp-content/plugins/AbonneerProgrammas/Albums. Надеюсь, вы, ребята, сможете мне помочь. Я программирую в WordPress с помощью плагина PHPCodeSnippets.

1 Ответ

1 голос
/ 28 февраля 2020
  1. Ваш код использует активный режим FTP, который вряд ли будет работать.

    Когда вы, по-видимому, переключаетесь в пассивный режим, вызывая ftp_pasv, он не работает, так как должен вызываться только после ftp_login.

  2. Второй аргумент ftp_put - это путь к файлу, а не к папке. Так и должно быть:

    $destination_folder = "/public_html/wp/wp-content/plugins/AbonneerProgrammas/Albums";
    $destination_file = $destination_folder . "/" . basename($_FILES['file']['name']);
    ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...