Предупреждение имя файла ftp_put () не может быть пустым - PullRequest
0 голосов
/ 20 апреля 2019

Мне нужно загрузить несколько видео и аудио файлов, используя 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>

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Распространенной причиной ошибки является превышение maximum allowed filesize. По крайней мере, проверьте ошибку в записи $_FILES для вашего файла, прежде чем пытаться загрузить по FTP

if ($_FILES['video_file']['error'] != UPLOAD_ERR_OK) {
  // handle the error instead of uploading e.g. give a message to user
}
0 голосов
/ 20 апреля 2019

Спасибо за вашу помощь, и после небольшой отладки кода я нашел решение. Вот рабочий фрагмент кода. Я не смог использовать функцию ftp_put(), потому что встроенный php-сервер macOS на моей машине не настроен. Я переключился с него на MAMP и решил проблему с размером загружаемого файла. Мне также нужно было включить режим ftp_pasv(), чтобы избежать проблем с загруженными файлами.

<?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!';
        }
      }
}

}

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...