yii2上传文件失败

yii2上传文件失败

我们先来看一下代码:

首先看一下View部分:


” method=”post” enctype=”multipart/form-data”>               
    

上面的action是用YII的助手类构建了一个内部可以识别的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 = '上传(移动)失败';             }else{                 $status = 0;                 $info = '上传成功';             }         } else {             //文件上传失败             $info = '文件上传失败';             switch($_FILES['myFile']['error']){                 case 1:                     $info = '上传文件超过php.ini中upload_max_filesize配置参数';                     break;                 case 2:                     $info = '上传文件超过表单MAX_FILE_SIZE选项指定的值';                     break;                 case 3:                     $info = '文件只有部份被上传';                     break;                 case 4:                     $info = '没有文件被上传';                     break;                 case 5:                     $info = '上传文件大小为0';                     break;             }             $status = 1;         }         return $info;     }

执行后发现

yii2上传文件失败

解决方法:

1、检查配置(php.ini)

file_uploads、upload_max_filesize、post_max_size、upload_tmp_dir是否已设置。

2、检查参数

发现参数中的crsf,这个参数是yii框架验证所带,提及验证,便和错误提示相仿,添加取消验证代码,如下:

public function beforeAction($action)     {         if ($action->id == 'datafile') {             $this->enableCsrfValidation = false;         }           return parent::beforeAction($action);     }

更多编程相关内容,请关注php中文网yii框架栏目!

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享