Почему изображение повреждается, загруженное на 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-сервер после завершения загружать.

Author: halfer, 2014-12-03

1 answers

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

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

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

 6
Author: mudasobwa, 2014-12-03 12:47:46