一:队列配置队列的配置文件放置在config/queue.php文件中,laravel框架中支持的队列驱动有:sync, database, beanstalkd, sqs, redis,null对应
顺晟科技
2022-11-02 13:49:15
252
在Yii中我们可以使用Yii自带的yii\web\UploadedFile类来实现文件上传
<?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 {
    //文件上传失败
}这时候我们就可以实现文件上传功能了
26
2023-02
26
2023-02
02
2022-11
02
2022-11
02
2022-11
29
2022-10