yii2上传文件失败

2020-08-24 16:04:30 来源:易采站长站 作者:

yii2上传文件失败,上传,文件上传,参数,看一下,上传文件

yii2上传文件失败

易采站长站,站长之家为您整理了yii2上传文件失败的相关内容。

我们先来看一下代码:

首先看一下View部分:

<form action="<?= Url::to(['default/datafile']) ?>" method="post" enctype="multipart/form-data">    <label for="file">Filename:</label>    <input type="file" name="myFile" id="file" />    <br />    <input type="submit" name="submit" value="Submit" /></form>

上面的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;    }

执行后发现

ab926130396ae0a60ef972b5642e1a0.png

解决方法:

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中文网编程入门栏目!以上就是关于对yii2上传文件失败的详细介绍。欢迎大家对yii2上传文件失败内容提出宝贵意见

微信扫一扫

易采站长站微信账号