使用 php 上传带有 ftp 连接的 Zip 文件

Posted

技术标签:

【中文标题】使用 php 上传带有 ftp 连接的 Zip 文件【英文标题】:Uplaod Zip file with ftp connection using php 【发布时间】:2014-07-03 12:26:21 【问题描述】:

我正在尝试在 ftp 连接中使用 php 上传一个 zip 文件。只有 zip 正在上传,但 zip 文件夹中没有文件夹或文件。

这是我正在尝试的代码:

$host = 'Your Ftp host';
$usr = 'Your Ftp User Name';
$pwd = 'Your Ftp password';

// file to move:
$local_file = 'C:\wamp\www\demo.zip';
$ftp_path = '/demo.zip';

// connect to FTP server (port 21)
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");

// send access parameters
 ftp_login($conn_id, $usr, $pwd) or die("Cannot login");

// turn on passive mode transfers (some servers need this)
ftp_pasv ($conn_id, true);

// perform file upload
$upload = ftp_put($conn_id,$ftp_path,$local_file, FTP_ASCII);

 // check upload status:
 print (!$upload) ? 'Cannot upload' : 'Upload complete';
 print "\n";

   /*
    ** Chmod the file (just as example)
   */

   // If you are using PHP4 then you need to use this code:
   // (because the "ftp_chmod" command is just available in PHP5+)
   if (!function_exists('ftp_chmod')) 
    function ftp_chmod($ftp_stream, $mode, $filename)
        return ftp_site($ftp_stream, sprintf('CHMOD %o %s', $mode, $filename));
      
  

  // try to chmod the new file to 666 (writeable)
  if (ftp_chmod($conn_id, 0644, $ftp_path) !== false) 
 print $ftp_path . " chmoded successfully to 644\n";
  else 
    print "could not chmod $file\n";
  

 // close the FTP stream
 ftp_close($conn_id);

请给我一个解决方案,我从过去 3 天开始尝试这样做..

【问题讨论】:

尝试将您的 ftp_path 更改为 './demo.zip' 并查看是否有效 【参考方案1】:

如果文件出现在服务器上,但文件的大小/内容不正确,则可能是您的传输模式(FTP_ASCII 或 FTP_BINARY)有问题。

尝试将您的 put 行替换为:

// perform file upload
$upload = ftp_put($conn_id,$ftp_path,$local_file, FTP_BINARY);

【讨论】:

如果服务器不支持二进制模式,则 ftp_put 命令将被忽略(无论如何使用 php 5)。在关闭服务器上的二进制模式后运行脚本时,我通过查看服务器日志发现了这一点。您的脚本在我的服务器上以二进制模式完美地发送了一个 tar.gz 文件(我猜是大多数其他文件)。您使用的是什么类型的服务器? 是的,您的脚本很好,它也可以在二进制模式下的 vsftpd 服务器上运行。很可能是服务器问题...

以上是关于使用 php 上传带有 ftp 连接的 Zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

突破PHP免费空间文件格式上传限制-FTP传zip,PHP解压zip文件 - 比单文件管理器更好用

通过带有PHP代码的Web服务器将应用程序上的本地文件上传到FTP服务器

怎么通过PHP来支持FTP和HTTP上传

在 ftp_get() 使用 PHP 的 ZIP 文件之前,在 FTP 服务器上以 ZIP 格式存档文件

如何使用 PHP 和 CURL 使用 api 在 github 上上传 zip

用于localhost的Wordpress FTP连接设置,用于上传和安装WooCommerce