简体   繁体   English

为什么图像被损坏使用PHP上传到FTP服务器?

[英]Why the image is getting corrupted uploaded to the FTP server using PHP?

I'm uploading image to the FTP server at specific folder location. 我正在将图像上传到特定文件夹位置的FTP服务器。 The code is working fine. 代码工作正常。 But when I look at the uploaded image, I got corrupted image file which can't be opened. 但是当我查看上传的图像时,我得到了无法打开的损坏的图像文件。 For few image files the image in a file gets corrupted. 对于少数图像文件,文件中的图像被破坏。 I'm not understanding why this is happening. 我不明白为什么会这样。

Following is the workable code that I tried: 以下是我尝试的可行代码:

      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:MyServerCreds@56.215.30.91/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);
  }

I'm not understanding when does the image file is getting corrupt while uploading to the FTP server of after finishing the upload. 我不知道在完成上传后上传到FTP服务器时图像文件何时被破坏。

You should set the mode with ftp_put to be FTP_BINARY : 您应该将模式设置为ftp_putFTP_BINARY

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

This is mandatory since ASCII mode checks whether the line endings differ on client/server (your case, since you are likely on windows and the server runs unix) and tries to convert them ( \\r\\n\\n ). 这是强制性的,因为ASCII模式检查客户端/服务器上的行结尾是否不同(您的情况,因为您很可能在Windows上并且服务器运行unix)并尝试转换它们( \\r\\n n⇒ \\n )。 In BINARY mode files are being sent as is. BINARY模式下,文件按原样发送。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 用ftp_nb_put上传到PHP中的FileZilla FTP服务器的文件已损坏 - File uploaded with ftp_nb_put to FileZilla FTP server in PHP is corrupted 为什么在以下情况下仍然存在使用设备摄像头捕获并上传到FTP服务器的“图像方向更改”问题? - Why the issue of “Change in orientation of image” that is captured using device camera and uploaded to FTP server persists in following scenario? Zip 作为块上传到 php 时损坏 - Zip getting corrupted when uploaded to php as chunks 从网络摄像头拍摄的上传图像在上传到服务器时已损坏 - Uploaded image taken from webcam is corrupted when uploaded to server 使用PHP将上传的图像复制到服务器 - Copying uploaded image to the server using PHP 使用PHP的PDF文件下载已在服务器中损坏 - PDF file download using PHP is getting corrupted in server 在Magento中使用FTP获取上传的图像上的404 - Getting a 404 on images uploaded using FTP in Magento 为什么使用move_uploaded_file函数后图像文件已损坏 - why do i have a corrupted image file after using move_uploaded_file function PHP - 将上传的图像保存到服务器 - PHP - Saving Uploaded Image to Server 使用PHP上传到FTP服务器后图像质量下降 - Image losing quality after upload to FTP server using PHP
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM