Yii2 FTP文件上传不起作用
问题描述:
我已经使用了yii2mod/yii2-ftp模块来上传FTP上传。但它不直接上传临时文件。Yii2 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;
}
}
输出返回的错误
“目录(/ tmp目录/ phpizYNd7):未能打开目录:不是一个目录”
答
在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 ([email protected]$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;
}
你试图打开一个文件,而不是目录我猜。 –
没有。我已经使用输入类型文件上传了一个文件。 – Rahman