我們先來(lái)看一下代碼:
首先看一下View部分:
上面的action是用YII的助手類構(gòu)建了一個(gè)內(nèi)部可以識(shí)別的url,就是DeaufaultController.php中的actionDatafile()
(推薦教程:yii框架)
?public?function?actionDatafile(){ ????????if(empty($_FILES)){ ????????????$status?=?1; ????????????$info?=?'沒有文件上傳'; ????????} ????????if($_FILES['myFile']['error']?===?0?||?$_FILES['myFile']['error']?===?'0'?){ ????????????//文件上傳成功 ????????????$tmp?=?pathinfo($_FILES['myFile']['name']); ????????????$new_fname?=?$tmp['filename'].'_'.rand(1000000,9999999).'.'.$tmp['extension']; ????????????echo?$new_fname; ????????????if(!move_uploaded_file($_FILES['myFile']['tmp_name'],?'../runtime/file/'.$new_fname)){ ????????????????$status?=?1; ????????????????$info?=?'上傳(移動(dòng))失敗'; ????????????}else{ ????????????????$status?=?0; ????????????????$info?=?'上傳成功'; ????????????} ????????}?else?{ ????????????//文件上傳失敗 ????????????$info?=?'文件上傳失敗'; ????????????switch($_FILES['myFile']['error']){ ????????????????case?1: ????????????????????$info?=?'上傳文件超過php.ini中upload_max_filesize配置參數(shù)'; ????????????????????break; ????????????????case?2: ????????????????????$info?=?'上傳文件超過表單MAX_FILE_SIZE選項(xiàng)指定的值'; ????????????????????break; ????????????????case?3: ????????????????????$info?=?'文件只有部份被上傳'; ????????????????????break; ????????????????case?4: ????????????????????$info?=?'沒有文件被上傳'; ????????????????????break; ????????????????case?5: ????????????????????$info?=?'上傳文件大小為0'; ????????????????????break; ????????????} ????????????$status?=?1; ????????} ????????return?$info; ????}
執(zhí)行后發(fā)現(xiàn)
解決方法:
1、檢查配置(php.ini)
file_uploads、upload_max_filesize、post_max_size、upload_tmp_dir是否已設(shè)置。
2、檢查參數(shù)
發(fā)現(xiàn)參數(shù)中的crsf,這個(gè)參數(shù)是yii框架驗(yàn)證所帶,提及驗(yàn)證,便和錯(cuò)誤提示相仿,添加取消驗(yàn)證代碼,如下:
public?function?beforeAction($action) ????{ ????????if?($action->id?==?'datafile')?{ ????????????$this->enableCsrfValidation?=?false; ????????} ? ????????return?parent::beforeAction($action); ????}
更多編程相關(guān)內(nèi)容,請(qǐng)關(guān)注php中文網(wǎng)yii框架欄目!
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載。
THE END