>PHP 프레임워크 >YII >yii2가 파일을 업로드하지 못했습니다.

yii2가 파일을 업로드하지 못했습니다.

王林
王林원래의
2020-02-18 15:17:132144검색

yii2가 파일을 업로드하지 못했습니다.

먼저 코드를 살펴보겠습니다.

먼저 보기 부분을 살펴보겠습니다.

<form action="<?= Url::to([&#39;default/datafile&#39;]) ?>" 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>

위 작업은 YII의 도우미 클래스를 사용하여 DeaufaultController.php의 actionDatafile()인 내부적으로 식별 가능한 URL을 구축합니다

(추천 튜토리얼: yii Framework)

 public function actionDatafile(){
        if(empty($_FILES)){
            $status = 1;
            $info = &#39;没有文件上传&#39;;
        }
        if($_FILES[&#39;myFile&#39;][&#39;error&#39;] === 0 || $_FILES[&#39;myFile&#39;][&#39;error&#39;] === &#39;0&#39; ){
            //文件上传成功
            $tmp = pathinfo($_FILES[&#39;myFile&#39;][&#39;name&#39;]);
            $new_fname = $tmp[&#39;filename&#39;].&#39;_&#39;.rand(1000000,9999999).&#39;.&#39;.$tmp[&#39;extension&#39;];
            echo $new_fname;
            if(!move_uploaded_file($_FILES[&#39;myFile&#39;][&#39;tmp_name&#39;], &#39;../runtime/file/&#39;.$new_fname)){
                $status = 1;
                $info = &#39;上传(移动)失败&#39;;
            }else{
                $status = 0;
                $info = &#39;上传成功&#39;;
            }
        } else {
            //文件上传失败
            $info = &#39;文件上传失败&#39;;
            switch($_FILES[&#39;myFile&#39;][&#39;error&#39;]){
                case 1:
                    $info = &#39;上传文件超过php.ini中upload_max_filesize配置参数&#39;;
                    break;
                case 2:
                    $info = &#39;上传文件超过表单MAX_FILE_SIZE选项指定的值&#39;;
                    break;
                case 3:
                    $info = &#39;文件只有部份被上传&#39;;
                    break;
                case 4:
                    $info = &#39;没有文件被上传&#39;;
                    break;
                case 5:
                    $info = &#39;上传文件大小为0&#39;;
                    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 == &#39;datafile&#39;) {
            $this->enableCsrfValidation = false;
        }
 
        return parent::beforeAction($action);
    }

더 많은 프로그래밍 관련 콘텐츠를 보려면 PHP 중국어 웹사이트

프로그래밍 소개 칼럼을 팔로우하세요!

위 내용은 yii2가 파일을 업로드하지 못했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.