温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

yii2上传文件失败的解决方法

发布时间:2021-01-14 11:46:45 来源:亿速云 阅读:422 作者:小新 栏目:编程语言

小编给大家分享一下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()

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

看完了这篇文章,相信你对“yii2上传文件失败的解决方法”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI