您的位置 首页 技术

yii2上传文件失败

我们先来看一下代码: 首先看一下View部分: <form action="<?= Url::to(['default/datafile'…

我们先来看一下代码:

首先看一下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);    }

更多编程相关内容,请关注24课堂在线网编程入门栏目!

以上就是yii2上传文件失败的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/40271.html

为您推荐

返回顶部