PHP上载脚本损坏文件,文件大小与源文件不同

PHP上载脚本损坏文件,文件大小与源文件不同,php,Php,我正在运行一个php脚本,当有人单击一个按钮时,它会在服务器上执行。脚本从一台服务器下载文件并在本地存储该文件,然后将其上载到另一台服务器 但是文件在中间的某个地方继续损坏,上传的端文件总是不同的大小并被损坏。 代码如下: <?php //Download CSV Script // connect and login to FTP and download zip $ftp_server = "URL REDACTED"; $ftp_conn = ftp_conne

我正在运行一个php脚本,当有人单击一个按钮时,它会在服务器上执行。脚本从一台服务器下载文件并在本地存储该文件,然后将其上载到另一台服务器

<>但是文件在中间的某个地方继续损坏,上传的端文件总是不同的大小并被损坏。

代码如下:

<?php

//Download CSV Script
// connect and login to FTP and download zip
$ftp_server = "URL REDACTED";
$ftp_conn = ftp_connect($ftp_server, 21) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, "USER", "PASS");

// turn passive mode on
ftp_pasv($ftp_conn, true);

$local_file = "feed/establishmentexport.zip";
$server_file = "establishmentexport.zip";

// download server file
if (ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII))
  {
  echo "Successfully downloaded from X.<br />";
  }
else
  {
  echo "Error downloading feed. Please reload and retry.<br />";
  }

// close connection
ftp_close($ftp_conn);

//End of download.

//FTP UPLOAD SCRIPTS
//Uploading the FTP file EMEA
$ftp_server = "REDACTED";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, "USER", "PASS");
// turn passive mode on
ftp_pasv($ftp_conn, true);

$local_file_u = "feed/establishmentexport.zip";

$server_file_u = "custom/establishmentexport.zip";

// upload file
if (ftp_put($ftp_conn, $server_file_u, $local_file_u, FTP_ASCII))
  {
  echo "Successfully uploaded to EMEA custom folder.<br />";
  }
else
  {
  echo "Error uploading to EMEA custom folder.<br />";
  }

// close connection
ftp_close($ftp_conn);
//End of Uploading the FTP file

?>

FTP\u ASCII
用于处理文本文件,我认为您应该使用
FTP\u BINARY
来正确处理.zip文件

替换:

ftp_get($ftp_conn, $local_file, $server_file, FTP_ASCII)
与:

以及:

与:


尝试使用FTP_二进制文件而不是FTP_二进制文件。请不要通过破坏您的帖子为他人做更多的工作。通过在Stack Exchange(SE)网络上发布,您已经在下授予了SE分发内容的不可撤销权利(无论您将来的选择如何)。根据SE政策,分发非故意破坏版本。因此,任何此类破坏性编辑都将恢复。有关删除此网站内容的详细信息,请参阅。但是,如果我对CSV之类的文本文件使用FTP二进制文件,这将不起作用,或者我可以对所有内容都使用二进制文件吗?您应该根据获得的文件定义类型:)
ftp_get($ftp_conn, $local_file, $server_file, FTP_BINARY)
ftp_put($ftp_conn, $server_file_u, $local_file_u, FTP_ASCII)
ftp_put($ftp_conn, $server_file_u, $local_file_u, FTP_BINARY)