Загрузить файл на ошибки удаленного FTP-сервера - PullRequest
2 голосов
/ 27 февраля 2020

В последнее время я работаю над формой загрузки. Идея заключается в том, что пользователи могут загружать свои файлы на удаленный FTP-сервер. Однако это не работает, как ожидалось.

Прежде чем я даже начинаю загружать файл, я получаю следующую ошибку: «Невозможно переместить загруженный файл в рабочий каталог». Опять же, я еще не начал загружать файл.

Вот мой PHP код:

<?php


//FTP variabelen met de values

$host = "radioprogrammabank.nl";

$user = "***";  

$pass = "***";

//location I want to send the uploaded file to (it is remote)
$destDir = "/domains/radioprogrammabank.nl/public_html/wp/wp-content/uploads";


$dehost = $_POST[$host];

$deuser = $_POST[$user];

$depass = $_POST[$pass];

$dedestDir = $_POST[$destDir];


$workDir = "\Users\stagiaire01\Uploads"; // definieer het lokale systeem

// get temporary file name for the uploaded file

$tmpName = basename($_FILES['file']['tmp_name']);

// copy uploaded file into the current directory

move_uploaded_file($_FILES['file']['tmp_name'], $workDir."/".$tmpName) or die('Cannot move uploaded file to working directory');

// maak connectie, als het niet werkt. Die en geef een melding

$conn = ftp_connect($host) or die ("Cannot initiate connection to host");

// send access parameters

ftp_login($conn, $user, $pass) or die("Cannot login");

// Voer de file upload uit

$upload = ftp_put($conn, $destDir."/".$_FILES['file']['name'], $workDir."/".$tmpName, FTP_BINARY);

// check upload status

// display message

if (!$upload) {

    echo "Upload mislukt";

} else {

    echo "Upload geslaagd";

}

// sluit de FTP connectie

ftp_close($conn);

// verwijder de lokale kopie van het bestand

unlink($workDir."/".$tmpName) or die("Cannot delete uploaded file from working directory -- manual deletion recommended");

?>

Мой HTML код:


<html>
<body>
<h2>U kunt hier uw album uploaden</h2>

<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="hidden" name="MAX_FILE_SIZE" value="5000000" />

File <br />
<input type="file" name="file" /><p />

<input type="submit" name="submit" value="Upload Album" />
</form>

</body>
[xyz-ips snippet="verbindftp"]
</html>

Вы может удивиться, почему у меня есть шорткод в HTML. Код написан на Wordpress. Я использую плагин, в котором я могу написать PHP. Код работает при написании этого шорткода.

Я также пытался сделать var_dump из $ _FILES, который говорит мне следующее:

"array(0) { } Upload misluktCannot delete uploaded file from working directory -- manual deletion recommended"

Я не знаю почему Я получаю это сообщение при выполнении var_dump. Я указал свой хост, имя пользователя, пароль и направление в моих значениях выше. Пароль и имя пользователя не отображаются из соображений безопасности.

Я не смог найти ответы на этот вопрос в StackOverflow. Однако я надеюсь, что предоставил вам достаточно информации, чтобы выручить меня. Я ожидаю, что смогу загрузить файл на удаленный FTP-сервер.

Привет,

Parsa_237

1 Ответ

0 голосов
/ 27 февраля 2020

Необходимо проверить, происходит ли загрузка, в противном случае он попытается подключиться к FTP-серверу при загрузке страницы, даже если пользователь еще не начал загрузку.

например,

if ( empty( $_FILES['file'] ) ) {
    return;
}

В качестве примечания, я заметил, что вы используете плагин PHP Snippets, этот плагин и другие подобные ему невероятно опасны. Вместо этого используйте add_shortcode в файле PHP для встраивания фрагментов PHP в страницы.

Вот почему вы столкнулись с этой проблемой, исходное руководство предполагало, что вы поместите код PHP в PHP файл с именем upload.php, поэтому он будет работать только после отправки формы. Но это не так с этим плагином

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...