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

Why the image is getting corrupted uploaded to the FTP server using PHP?(为什么使用 PHP 上传到 FTP 服务器的图像会损坏?)
本文介绍了为什么使用 PHP 上传到 FTP 服务器的图像会损坏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在将图像上传到特定文件夹位置的 FTP 服务器.代码工作正常.但是当我查看上传的图像时,我得到了无法打开的损坏的图像文件.对于少数图像文件,文件中的图像已损坏.我不明白为什么会这样.

I'm uploading image to the FTP server at specific folder location. 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);
  }

我不明白图像文件何时在上传完成后上传到 FTP 服务器时损坏.

I'm not understanding when does the image file is getting corrupt while uploading to the FTP server of after finishing the upload.

推荐答案

你应该用 ftp_putFTP_BINARY:

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

这是强制性的,因为 ASCII 模式检查客户端/服务器上的行尾是否不同(您的情况,因为您可能在 Windows 上并且服务器运行 unix)并尝试转换它们( ).在 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 ( ). In BINARY mode files are being sent as is.

这篇关于为什么使用 PHP 上传到 FTP 服务器的图像会损坏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Convert JSON integers and floats to strings(将JSON整数和浮点数转换为字符串)
in php how do I use preg replace to turn a url into a tinyurl(在php中,如何使用preg替换将URL转换为TinyURL)
all day appointment for ics calendar file wont work(ICS日历文件的全天约会不起作用)
trim function is giving unexpected values php(Trim函数提供了意外的值php)
Basic PDO connection to MySQL(到MySQL的基本PDO连接)
PHP number_format returns 1.00(Php number_Format返回1.00)