本文介绍了为什么使用 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:[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 服务器时损坏.

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 服务器的图像会损坏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-20 22:19