Как я могу вернуться в каталог по пути к файлу "ftp_put"? - PullRequest
0 голосов
/ 28 июля 2011

У меня есть страница, на которой пользователи моего веб-сайта могут изменить информацию, введенную ими для своей учетной записи (например, настоящее имя, адрес электронной почты и аватар).Я хочу, чтобы они поменяли свой аватар.Все прошло хорошо, за исключением последней части: загрузки файла.Сначала я нашел файл, затем изменил его размер, и теперь я пытаюсь загрузить его на свой сервер с помощью метода "ftp_put" в PHP.

Используемый мной скрипт находится на моем сайтекорневой каталог) папка "/scripts/newavatar.php".Папка, в которую я пытаюсь загрузить, - "/avatars/".Моя проблема в том, что FTP не распознает, что я ввел "public_html/avatars" или "../avatars/", или не должен или что-то еще.Я не знаю, как объяснить это лучше.Может кто-нибудь, пожалуйста, помогите мне?

Ответы [ 3 ]

0 голосов
/ 28 июля 2011

Файл изображения уже находится на вашем сервере, поэтому вам не нужно использовать методы FTP.

Вот как ты это делаешь

  1. Загрузить файл через форму
  2. Загрузить файл в imagecreatefrompng() или аналогичный по $_FILES['field_name']['tmp_name'] пути
  3. Внести изменения / изменить размер
  4. Сохраните файл до конечного пункта назначения, используя imagepng($imageResource, '/path/to/avatars/image-file-name.png')

Обновление

Полагаю, у вас возникли проблемы с пониманием путей на стороне сервера. Вероятно, вам проще всего использовать путь относительно файла scripts/newavatar.php при сохранении окончательного изображения. Для этого используйте специальную константу __FILE__, например,

// save final image
imagepng($imageResource, dirname(dirname(__FILE__)) . '/avatars/' . $imageFilename);
0 голосов
/ 14 августа 2018

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

remote_file = "1532574888.exe";
local_file = "../../files/cleaned/1532574888.exe";
ftp_put($ftp_conn, $remote_file, $local_file, FTP_ASCII);

У меня работает.

0 голосов
/ 28 июля 2011

Вы должны использовать полный FTP-путь к папке с аватарами.Если он находится в корневом каталоге FTP, попробуйте:

ftp_put($conn_id, "/avatars/" . $file_name, $local_file_name, FTP_BINARY);
...