yii框架中的文件上傳

用YII框架來實現文件上傳呢,首頁明確幾點要求,Model層需要使用Gii工具來生成,生成之後呢,Model層會有一個用來報錯的方法

public function attributeLabels()
{
    return [
        'id' => 'ID',
        'aname' => 'Aname',
        'appid' => 'Appid',
        'appsecret' => 'Appsecret',
        'account' => 'Account',
        'aimg' => 'Aimg',
        'u_id' => 'U ID',
    ];
}

這個呢,是Gii創建Model層自動根據數據庫生成的,用數據庫中的字段來當Key值,字段的註釋來當value值,其只要是用來報錯,稍後來講它的作用


有的同學在初學yii框架時,表單頁面可能會使用原生態頁面,也就是我們常用的form表單,而不是根據yii框架中的表單。這個不要緊,跟我們以前寫的一樣,什麼不需要改

<!doctype html>
<html lang="`">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<form action="提交地址" method="post" enctype="multipart/form-data">
    <input type="file" name="b_name">
    <input type="submit" vlaue="提交">




</form>
</body>
</html>

這樣的表單我們一樣也可以實現,下面來看看控制器的代碼

use yii\web\UploadedFile;

首先在控制器中引入這個類

接着是方法


    public function actionAdd()
    {
        //首先判斷是否是POST提交,不是post提交的輸出4
        if(\Yii::$app->request->isPost) {
            //接收圖片的信息值
            $image = UploadedFile::getInstanceByName('aimg');
            //可以打印看看
            //上傳目錄,進行命名
            $dir='upload/';
            //這個文件要創建到web的目錄下
            //文件的絕對路徑
            $name = $dir.$image->name;
            //保存文件函數,在手冊上有,將圖片保存到本地
            $status = $image->saveAs($name,true);
            //這個打印出來的是1!!
            //進行判斷,保存本地失敗,輸出3
            if ($status) {
                //實例化model層,model層用GII創建,否則報錯
                $model = new Official();
                //定義將添加的圖片路徑
                $model->aimg=$name;
 //調用model層attributes方法,將post接值數據一起(這是將表單中的其他值接受過來,一起入庫使的)
               $model->attributes = \Yii::$app->request->post();
//
                //$moell->save 等同與 $model->insert();
                //進行判斷,如果添加成功,將進行提示跳轉
                if ($model->save())
                {
                    //成功  輸出1
                    echo 1;
                }
                else
                {
                        //失敗  輸出2
                    echo 2;
                }

            }else {
                    echo 3;
            }

        }else{
            echo 4;
        }
    }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章