Yii 使用自带UploadFile实现文件上传
huaweichenai -在Yii中我们可以使用Yii自带的yii\web\UploadedFile类来实现文件上传
一:创建一个上传的模型类(UploadForm)<?php
namespace app\models;
use yii\base\Model;
/**
*上传模型类
*/
class UploadForm extends Model
{
/**
* @var UploadedFile
*/
public $imageFile;
//上传验证
public function rules()
{
return [
[['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, xlsx'],
];
}
/**
* function: upload
* author: wangjian
* date: 2019/5/7 16:33
* 文件上传
*/
public function upload()
{
if ($this->validate()) {
$dir = 'uploads/';
$fileName = time();
//判断上传目录是否存在,不存在创建一个目录
if (!is_dir($dir)) {
mkdir($dir);
}
//确定上传文件路径
$filePath = $dir . $fileName . '.' . $this->imageFile->extension;
//上传文件
$this->imageFile->saveAs($filePath);
return $filePath;
} else {
//上传失败
return false;
}
}
}
如果使用Yii自带的yii\web\UploadedFile类来实现文件上传的话,上传文件的视图可以使用yii\widgets\ActiveForm部件来创建上传表单,例:
<?php
use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>
<?= $form->field($model, 'imageFile')->fileInput() ?>
<button>上传</button>
<?php ActiveForm::end() ?>
如果你不想要使用<?= $form->field($model, 'imageFile')->fileInput() ?>来创建上传控件的话,你使用input来创建上传控件时,这时候input上传控件的name参数必须设置为:
//上传模型类名[上传文件名]
UploadForm[imageFile]
二:上传控制器://获取上传信息
$model->imageFile = UploadedFile::getInstance($model, 'imageFile');
//上传
$upload = $model->upload();
if ($upload) {
// 文件上传成功
}else {
//文件上传失败
}
这时候我们就可以实现文件上传功能了
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
php介绍
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
下一篇: Yii 实现乐观锁和悲观锁