Я использовал модуль yii2mod / yii2-ftp для загрузки по FTP. Но это не загрузка временного файла напрямую.
$uploadPath='/'.ucfirst(Yii::$app->user->identity->district->district->district_name).'/'.'temp/'.$model->quick_string;
///district/temp/1508159604x16 this my upload folder
if ($FtpClient->mkdir($uploadPath)){
$source_directory=$model->file->tempName;
$target_directory=$uploadPath.'/'.$model->file->name;
if($FtpClient->putAll($source_directory, $target_directory,FTP_BINARY)){
echo "success";exit;
}
}
вывод вернул ошибку
«dir (/ tmp / phpizYNd7): не удалось открыть dir: не каталог»
В yii2mod / yii2-ftp метод putAll рассматривается как каталог. Таким образом, файл не может быть загружен. Проверьте аргументы файла или папки внутри функции.
Поставщик / yii2mod / yii2-ftp / ftpClient.php Строка 606
public function putAll($source_directory, $target_directory, $mode = FTP_BINARY)
{
if(is_dir($source_directory)){
$d = dir($source_directory);
// do this for each file in the directory
while ($file = $d->read()) {
// to prevent an infinite loop
if ($file != '.' && $file != '..') {
// do the following if it is a directory
if (is_dir($source_directory . '/' . $file)) {
if (!@$this->ftp->chdir($target_directory . '/' . $file)) {
// create directories that do not yet exist
$this->ftp->mkdir($target_directory . '/' . $file);
}
// recursive part
$this->putAll(
$source_directory . '/' . $file, $target_directory . '/' . $file,
$mode
);
} else {
// put the files
$this->ftp->put(
$target_directory . '/' . $file, $source_directory . '/' . $file,
$mode
);
}
}
}
}else{
$this->ftp->put(
$target_directory, $source_directory,
$mode
);
}
return $this;
}
Других решений пока нет …