PHP загрузка файла из браузера на FTP - PullRequest
0 голосов
/ 13 октября 2018

Я хочу загрузить файлы с компьютера пользователя в папку uploads на моем FTP, и это не работает.Вы можете мне помочь?

$ftp_server = "some ip";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, "some name", "some password");

$target_dir = "uploads/";
$target_file = basename($_FILES["filename"]["name"]);

if (ftp_fput($ftp_conn, $target_dir.$target_file, FTP_ASCII))
  {
  echo "Successfully uploaded $target_file.";
  }
else
  {
  echo "Error uploading $target_file.";
  }

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вам необходимо указать, какой локальный файл (с веб-сервера) вы хотите загрузить на FTP-сервер.

Вы можете получить имя временного файла, который содержит файл, загруженный через HTTP POST от пользователяна ваш веб-сервер, используя $_FILES["filename"]["tmp_name"].Читайте о POST-методе загрузки в PHP.

Затем вы можете передать это ftp_put (не нужно ftp_fput):

ftp_put($ftp_conn, $target_dir.$target_file, $_FILES["filename"]["tmp_name"], FTP_IMAGE)

Две другие проблемы в вашем коде (которые не являются вашими непосредственными проблемами, но вы столкнетесь с ними сразу же после того, как решите их):

0 голосов
/ 13 октября 2018

использование php-ftp-client библиотека:

$ftp = new \FtpClient\FtpClient();
$ftp->connect($host, true, 990);
$ftp->login($login, $password);
// upload with the BINARY mode
$ftp->putAll($source_directory, $target_directory);

// Is equal to
$ftp->putAll($source_directory, $target_directory, FTP_BINARY);

// or upload with the ASCII mode
$ftp->putAll($source_directory, $target_directory, FTP_ASCII);
...