李记辉 2015-05-21 11:18:06 4861次浏览 2条评论 1 3 0

控制器:

public function actionCreate()
{

    $model = new Goods();

    if ($model->load(Yii::$app->request->post())) 
    {

        $model->file= UploadedFile::getInstance($model, 'file');

        //图片插入数据库时的路径,在Uploads下以当天日期为文件名,前提是在basic/web/下新建images/Uploads文件夹
        $insert_path ='Uploads/'. date('Y-m-d' , time()) . '/';

        // 图片保存在本地的路径:images/Uploads/当天日期/文件名,默认放置在basic/web/下
        $base_path = 'images/'. $insert_path;
         
        if ($model->file&& $model->validate()) 
        {  

            // 如果路径中的文件夹不存在,则新建这一文件夹
            if(!is_dir($base_path)) {
                mkdir($base_path , 0777);
            }  

            // 将图片上传到本地
            $model->file->saveAs($base_path . $model->file->baseName . '.' . $model->file->extension);

            // 为了方便在view中遍历出来,在数据库以“当天日期/文件名”形式保存
            $model->file= $insert_path . $model->file->baseName . '.' . $model->file->extension;
        }
        // 保存数据
        $model->save();
    }

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

create视图:

<?= $form->field($model, 'file')->fileInput()->label(false) ?>

这是我在项目移植时这么做的,因为用同一个数据库,为了保证之前数据库中存的图片路径“Uploads/日期/图片名”有效才这么做的,希望对大家有所帮助

觉得很赞
您需要登录后才可以评论。登录 | 立即注册