загрузка файла — Почему изображение загружается на FTP-сервер с использованием PHP?

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

Ниже приведен работоспособный код, который я пробовал:

      if(!empty($_FILES['student_image']['name'])) {
$ext = pathinfo($_FILES['student_image']['name'], PATHINFO_EXTENSION);

$student_image_name = 'student_'.$student_data['student_id'].'.'.$ext;

$ftp_server="56.215.30.91";
$ftp_user_name="myservercreds";
$ftp_user_pass="MyServerCreds";

$file = $_FILES['student_image']['tmp_name'];//file to be uploaded to FTP server
$remote_file = "/Students/".$student_image_name;// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if($login_result) {
if(!is_dir('ftp://myservercreds:[email protected]/Students')) {
ftp_mkdir($conn_id, "/Students");
ftp_chmod($conn_id, 0777, '/Students');
}

if(!file_exists("/Students/".$student_image_name))
$file_upload_status = ftp_put($conn_id, $remote_file, $file, FTP_ASCII);
}

// close the connection
ftp_close($conn_id);
}

Я не понимаю, когда файл изображения становится поврежденным при загрузке на сервер FTP после завершения загрузки.

3

Решение

Вы должны установить режим с ftp_put быть FTP_BINARY:

ftp_put($conn_id, $remote_file, $file, FTP_BINARY);

Это обязательно, так как ASCII mode проверяет, отличаются ли окончания строк на клиенте / сервере (в вашем случае, поскольку вы, скорее всего, используете windows, а сервер работает под управлением unix) и пытается преобразовать их (\r\n\n). В BINARY Файлы режима отправляются как есть.

6

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

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

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