mysql — загрузка изображения на FTP с использованием переполнения стека

Я попытался загрузить файлы на сервер с помощью ftp-соединения в php, и он не работает, он подключается, но получает сообщение об ошибке типа «Подключено к XXXXXXXXXXX, для пользователя XXXXXXXXXXXXX FTP-загрузка не удалась!» Я пробовал следующий код, пожалуйста, помогите, исправляя его, ..

image.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Welcome</title>
</head>

<body>
<form action="upload.php" enctype="multipart/form-data" method="post">
<input name="file" type="file" />
<input name="submit" type="submit" value="Upload File" />
</form>
</body>
</html>

upload.php

<?php
$ftp_server = "XXXXXX";
$ftp_user_name = "XXXXXXX";
$ftp_user_pass = "XXXXXXXX";
$destination_file = "imagetest/123/".$_FILES['file']['name'];
$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);
?>

0

Решение

Я протестировал ваш код и мне было немного трудно заставить его работать, но для меня сработало что-то вроде /http_docs, или же /public_html в качестве базовой / корневой папки.

  • Имена корневых папок будут отличаться от услуг хостинга, поэтому измените их соответствующим образом.

То есть и с несколькими модификациями:

<?php
$ftp_server = "XXXXXX";
$ftp_user_name = "XXXXXXX";
$ftp_user_pass = "XXXXXXXX";

$folder = "/http_docs/imagetest/123/";

$destination_file = $folder . $_FILES['file']['name'];

$source_file = $_FILES['file']['tmp_name'];

// rest of code

Примечание:

Делать не используйте полное имя пути.

т.е .: /var/user/you/public_html/ это не сработает.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]