You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kartik Tree Manager节点创建时文件上传功能异常求助

解决Kartik Tree Manager节点创建时文件上传无效的问题

核心问题排查与修复步骤

1. 表单必须添加文件上传编码类型

文件上传的表单必须声明enctype="multipart/form-data",否则服务器无法接收上传的文件。修改视图代码,确保ActiveForm初始化时包含该属性:

<?php $form = ActiveForm::begin([
    'options' => ['enctype' => 'multipart/form-data']
]); ?>

<?= $form
    ->field($node,'f_content')
    ->fileInput()
    ->label('Select File');
?>

<?php ActiveForm::end(); ?>

2. 修正控制器中文件上传的处理逻辑

Yii2中处理上传文件不能直接通过$model->f_content获取,需要用UploadedFile类读取临时文件。替换控制器中的文件处理代码:

public function actionCreate($parent_id = null)
{
    $model = new Folders();

    if ($model->load(Yii::$app->request->post())) {
        // 获取上传的文件实例
        $uploadedFile = \yii\web\UploadedFile::getInstance($model, 'f_content');
        if ($uploadedFile !== null) {
            // 读取文件二进制内容
            $fileContent = file_get_contents($uploadedFile->tempName);
            $model->f_content = $fileContent;
        }

        if ($parent_id !== null) {
            $parent = Folders::findOne($parent_id);
            if ($parent) {
                $model->prependTo($parent);
            }
        }

        if ($model->save()) {
            Yii::$app->session->setFlash('success', 'The record has been saved successfully.');
            return $this->redirect(['view', 'id' => $model->id]);
        } else {
            Yii::$app->session->setFlash('error', 'An error occurred while saving.');
            // 可临时添加调试代码:var_dump($model->errors);die;
        }
    }

    return $this->render('create', [
        'model' => $model,
    ]);
}

3. 验证数据库字段类型

确保f_content字段的类型为BLOB或LONGBLOB(大文件用后者),若字段为字符串类型(如VARCHAR),无法存储二进制内容,会导致内容被截断或显示为异常值。

4. 检查模型规则

确保Folders模型中f_content字段的规则允许接收文件或二进制数据,示例如下:

public function rules()
{
    return [
        // 其他规则...
        [['f_content'], 'safe'],
        [['f_content'], 'file', 'skipOnEmpty' => true], // 可添加maxSize、extensions等参数限制文件
    ];
}

内容的提问来源于stack exchange,提问作者marco cardinale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:03:26