В вашем коде я заметил две вещи. Первый способ передачи зависит от типа вашего файла. Файлы, которые находятся в списке расширений ascii / text, передаются как ascii, все остальные файлы передаются в двоичном формате. Второй может быть проблема в вашем файл, который вы получили, может быть, это черный, сначала проверьте это. Вы можете попробовать этот код, он работает для меня.
<?php
// connect and login to FTP server
$ftp_server = "ftp.example.com";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$file = "localfile.txt";
// upload file
if (ftp_put($ftp_conn, "serverfile.txt", $file, FTP_ASCII))
{
echo "Successfully uploaded $file.";
}
else
{
echo "Error uploading $file.";
}
// close connection
ftp_close($ftp_conn);
?>