文件上传时将目录写入数据库(basic版) [ 2.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/日期/图片名”有效才这么做的,希望对大家有所帮助
李记辉
            注册时间:2015-05-07
最后登录:2小时前
在线时长:130小时41分
    最后登录:2小时前
在线时长:130小时41分
- 粉丝12
- 金钱74345
- 威望20
- 积分75845




共 2 条评论
真是看不懂呢
看的好蒙呀