yii2 上传整理
以yii2框架的自带的注册为例
一、单文件上传
1.1.1 视图显示,打开frontend/views/site/signup.php
1.1.2 添加上传文件框 <?= $form->field($model, 'file')->fileInput() ?>
1.2.1 model处理,打开frontend/models/SignupForm.php
1.2.1 定义属性 public $file;
1.2.2 添加规则 ['file', 'file','extensions'=>'jpg,png','maxFiles'=>3],
还可以添加很多限制 更多规则看yii2手册:http://www.yiichina.com/doc/api/2.0/yii-validators-filtervalidator
1.3.1 控制器处理,打开frontend/controllers/SiteController.php
1.3.2 文件最上边写命名空间 use yii\web\UploadedFile;
1.3.3 这里就到最要的部分了
1.3.4 创建上传文件要放的文件夹
if(!is_dir("upload/")){
mkdir("upload/");
}
文件夹创建到了frontend\web\下
1.3.5 接收文件 $file = UploadedFile::getInstances($model,"file");
1.3.6 $file->saveAs("upload/"."file_".time()."_".rand(1111,9999).".".$file->extension); 保存文件到指定目录
这时候去执行你就会发现上传成功,文件已经移动到文件夹并且是制定的文件名格式
OK 单文件上传成功
二 、 多文件处理
2.1.1 单文件上传好好看的话多文件处理一看就懂 在这就不说这么详细了,直接上代码
2.1.2 视图显示,打开frontend/views/site/signup.php
2.1.3 添加上传文件框 <?= $form->field($model, 'file[]')->fileInput(['multiple'=>true]) ?>
2.1.4 循环添加到本地
foreach ($file as $file) {
$file->saveAs("upload/"."file_".time()."_".rand(1111,9999).".".$file->extension);
}
三、入库
3.1.1 DAO模式入库到另外一张表,并且存入User表里的ID
3.1.2 入库代码,下面上截图详细解说
foreach ($file as $file) {
$file->saveAs("upload/"."file_".time()."_".rand(1111,9999).".".$file->extension);
$files['file'] = "upload/"."file_".time()."_".rand(1111,9999).".".$file->extension;
$files['uid']=$user['id'];
Yii::$app->db->createCommand()->insert('file',$files)->execute();
}
ok 多个文件上传成功并且路径入库
想追原理的可以每一步都打印一下