Php Yii通过表单发送后缺少文件

Php Yii通过表单发送后缺少文件,php,file-upload,yii2,Php,File Upload,Yii2,我是phbp和yii的新手,我对sendind文件有一个问题,我正在使用没有模型的kartik\file\FileInput小部件,我发送给yii控制器,在那里我可以从$POST获取我的文件,我第一次使用move_上传了带有链接的文件到tmp上的我的文件。move的第一个想法不起作用,我在磁盘上找不到我的文件,我知道是systemd,但我在php.ini中更改了我的tmp文件夹,但是表单中的文件没有显示在这里。这是我的conbtroller $output = ""; $mode

我是phbp和yii的新手,我对sendind文件有一个问题,我正在使用没有模型的kartik\file\FileInput小部件,我发送给yii控制器,在那里我可以从$POST获取我的文件,我第一次使用move_上传了带有链接的文件到tmp上的我的文件。move的第一个想法不起作用,我在磁盘上找不到我的文件,我知道是systemd,但我在php.ini中更改了我的tmp文件夹,但是表单中的文件没有显示在这里。这是我的conbtroller

    $output = "";
    $modelZalaczniki = new DelegacjeZalacznikiSearch();
    $modelZalaczniki->d_add = date('Y-m-d H:i:s');
    $modelZalaczniki->u_add = Yii::$app->user->identity->id;

    if (empty($_FILES['file'])){
        echo json_encode(['error'=>'Nie znaleziono plik.w.']);
        return;
    }

    $files = $_FILES['file'];
    $success = null;
    $paths = [];

    $fileNames = $files['name'];

    if(!file_exists('uploads')){
        mkdir('uploads', 0750, true);
    }
    if(!file_exists('uploads'.DIRECTORY_SEPARATOR.'delegacje')){
        mkdir('uploads'.DIRECTORY_SEPARATOR.'delegacje', 0750, true);
    }
    if(!file_exists('uploads'.DIRECTORY_SEPARATOR.'delegacje'.DIRECTORY_SEPARATOR.'pliki')){
        mkdir('uploads'.DIRECTORY_SEPARATOR.'delegacje'.DIRECTORY_SEPARATOR.'pliki', 0750, true);
    }
    if(!file_exists('uploads'.DIRECTORY_SEPARATOR.'delegacje'.DIRECTORY_SEPARATOR.'pliki'.DIRECTORY_SEPARATOR.$delegacja_id)){
        mkdir('uploads'.DIRECTORY_SEPARATOR.'delegacje'.DIRECTORY_SEPARATOR.'pliki'.DIRECTORY_SEPARATOR.$delegacja_id, 0750, true);
    }
    for($i = 0; $i < count($fileNames); $i++){
        $ext = explode('.', basename($fileNames[$i]));
        $hashName = md5($fileNames[$i]);
        $target = 'uploads'.DIRECTORY_SEPARATOR.'delegacje'.DIRECTORY_SEPARATOR.'pliki'.DIRECTORY_SEPARATOR.$delegacja_id.DIRECTORY_SEPARATOR.$hashName;
        // if(file_exists($target)){
        //     $success = true;
        //     break;
        // }

        if(move_uploaded_file($files['tmp_name'][$i], $target)){
            $success = true;
            $paths[] = $target;

            $modelZalaczniki = new DelegacjeZalaczniki();
            $modelZalaczniki->delegacja_id = $delegacja_id;
            $modelZalaczniki->d_add = date('Y-m-d H:i:s');
            $modelZalaczniki->u_add = Yii::$app->user->identity->id;
            $modelZalaczniki->sciezka = $target;
            $modelZalaczniki->nazwa = $fileNames[$i];
            $modelZalaczniki->typ = $ext[1];
            $modelZalaczniki->size = $files['size'][$i];

            if ($modelZalaczniki->validate()){
                $modelZalaczniki->save();
            }
        }else{
            $success = false;
            break;
        }
$output=”“;
$modelZalaczniki=新的delegacjalacznikisearch();
$modelZalaczniki->d_add=date('Y-m-d H:i:s');
$modelZalaczniki->u_add=Yii::$app->user->identity->id;
if(空($\u文件['file'])){
echo json_encode(['error'=>'Nie znaleziono plik.w.]);
返回;
}
$files=$_文件['file'];
$success=null;
$path=[];
$fileNames=$files['name'];
如果(!file_存在('uploads')){
mkdir(“上传”,0750,真);
}
如果(!file_存在('uploads'.DIRECTORY_SEPARATOR.delegacje')){
mkdir('uploads'.DIRECTORY_SEPARATOR.delegacje',0750,true);
}
如果(!file_存在('uploads'.DIRECTORY_SEPARATOR.delegacje'.DIRECTORY_SEPARATOR.pliki')){
mkdir('uploads'.DIRECTORY_SEPARATOR.delegacje'.DIRECTORY_SEPARATOR.pliki',0750,true);
}
如果(!file_存在('uploads'.DIRECTORY_SEPARATOR.delegacje'.DIRECTORY_SEPARATOR.pliki'.DIRECTORY_SEPARATOR.delegacja_id)){
mkdir('uploads'.DIRECTORY_SEPARATOR.delegacje'.DIRECTORY_SEPARATOR.pliki'.DIRECTORY_SEPARATOR.$delegacja_id,0750,true);
}
对于($i=0;$idelegacja_id=$delegacja_id;
$modelZalaczniki->d_add=date('Y-m-d H:i:s');
$modelZalaczniki->u_add=Yii::$app->user->identity->id;
$modelZalaczniki->sciezka=$target;
$modelZalaczniki->nazwa=$fileNames[$i];
$modelZalaczniki->typ=$ext[1];
$modelZalaczniki->size=$files['size'][$i];
如果($modelZalaczniki->validate()){
$modelZalaczniki->save();
}
}否则{
$success=false;
打破
}

一切正常,但我无法将文件移动到我的文件夹,啊哈,文件已创建,但在此文件中链接到yii文档。

yii 2.0非常适合上传文件。无需
移动上传的文件。

请看一下文档,特别是
UploadedFile::getInstance()
方法

以下是与您所做工作相关的有用示例:

在上面的代码中,提交表单时,调用yii\web\UploadedFile::getInstance()方法将上载的文件表示为UploadedFile实例。然后,我们依靠模型验证来确保上载的文件有效,并将文件保存在服务器上


我必须添加一些我想发送文件而不使用模型的东西,这可行吗?使用Yii没有任何意义如果你这样编码,你应该使用框架如果你想在框架中工作,你应该使用
Yii\web\UploadedFile
,如本文所述