Php Yii通过表单发送后缺少文件
我是phbp和yii的新手,我对sendind文件有一个问题,我正在使用没有模型的kartik\file\FileInput小部件,我发送给yii控制器,在那里我可以从$POST获取我的文件,我第一次使用move_上传了带有链接的文件到tmp上的我的文件。move的第一个想法不起作用,我在磁盘上找不到我的文件,我知道是systemd,但我在php.ini中更改了我的tmp文件夹,但是表单中的文件没有显示在这里。这是我的conbtrollerPhp 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
$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
,如本文所述