用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; } }