警告ftp_put()filename不能为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了警告ftp_put()filename不能为空相关的知识,希望对你有一定的参考价值。

我需要使用php和ftp上传一些视频和音频文件。我正在使用php内置的ftp函数,但我遇到了ftp_put()函数的一些问题。在我测试代码时,它会继续给我一个与文件名相关的错误。我怎么解决这个问题。

这是我尝试上传文件时php控制台的输出:

Warning: ftp_put(): Filename cannot be empty in /Users/uc/Desktop/c/FtpManager.php on line 37

这是$_FILES阵列转储:array(5) { ["name"]=> string(8) "em_1.mp4" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }

我用来编写脚本原型的代码如下:

<?php 
  /* Upload video */
  public function uploadVideo(array $inputFile){
      if( ftp_chdir( $this->conn, "/cloud.mywebsite.com/" ) ){
        $upload = ftp_put( $this->conn, $inputFile['video_file']['name'], $inputFile['video_file']['name'], FTP_BINARY);
        if( $upload ){
          echo 'File uploaded!';
        }
      }
  }

if(isset($_POST['upload_video'])){
  echo $ftp->uploadVideo($_FILES['video_file']);
}

?>

<form enctype="multipart/form-data" method="POST" action="">
  <input type="file" name="video_file" />
  <input type="submit" name="upload_video">
</form>
答案

错误的常见原因是超过maximum allowed filesize。至少,在尝试FTP上传之前,请检查文件的$_FILES条目中的错误

if ($_FILES['video_file']['error'] != UPLOAD_ERR_OK) {
  // handle the error instead of uploading e.g. give a message to user
}
另一答案

感谢您的帮助,经过一些代码调试后我找到了解决方案。这是代码的工作片段。我无法使用ftp_put()函数,因为我的机器上的嵌入式macOS php服务器未配置。我已经从它切换到MAMP,我已经解决了上传文件大小问题。我还需要将ftp_pasv()模式设置为on以避免上传文件的问题。

<?php 

class ftp{

public function ftpLogin(){
    if( ftp_login($this->conn, $this->user, $this->pwd) ){
      ftp_pasv($this->conn, true);
      echo "Connected to: $this->host !";
    }
}

public function uploadVideo(array $inputFile){
      if( ftp_chdir( $this->conn, "/mysite.subdomain.com/" ) ){
        $upload = ftp_put( $this->conn, $inputFile['name'], $inputFile['tmp_name'], FTP_BINARY);
        if( $upload ){
          echo 'File uploaded!';
        }
      }
}

}

?>

以上是关于警告ftp_put()filename不能为空的主要内容,如果未能解决你的问题,请参考以下文章

照片上传 getimagesize() 警告 - 文件名不能为空

如何抑制可能的空引用警告

为啥会出安全警告 错误: 'files.0' 为空或不是对象

如果组合框为空,则 Excel 宏中的警告消息

Path.GetExtension(file.FileName) 给出可能的 Nullreference 警告

警告:从 C 中不兼容的指针类型返回