最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

yii2上传文件失败

来源:动视网 责编:小采 时间:2020-11-03 18:17:55
文档

yii2上传文件失败

yii2上传文件失败:我们先来看一下代码:首先看一下View部分:<form action="<= Url::to(['default/datafile']) >" method="post" enctype="multipart/form-data"> &l
推荐度:
导读yii2上传文件失败:我们先来看一下代码:首先看一下View部分:<form action="<= Url::to(['default/datafile']) >" method="post" enctype="multipart/form-data"> &l


我们先来看一下代码:

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

执行后发现

解决方法:

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

更多编程相关内容,请关注Gxlcms编程入门栏目!

文档

yii2上传文件失败

yii2上传文件失败:我们先来看一下代码:首先看一下View部分:<form action="<= Url::to(['default/datafile']) >" method="post" enctype="multipart/form-data"> &l
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top