> PHP 프레임워크 > YII > Yii 프레임워크에서 파일 업로드 및 다운로드: 파일 관련 작업 구현

Yii 프레임워크에서 파일 업로드 및 다운로드: 파일 관련 작업 구현

王林
풀어 주다: 2023-06-21 09:44:26
원래의
1237명이 탐색했습니다.

Yii 프레임워크는 PHP 언어 기반의 MVC 프레임워크입니다. 주요 특징은 빠른 개발, 단순성 및 효율성입니다. 웹 사이트 개발에서 파일 업로드 및 다운로드는 일반적인 기능입니다. 이 기사에서는 Yii 프레임워크에서 파일 업로드 및 다운로드를 구현하는 방법을 소개합니다.

1. 파일 업로드

1. 준비

파일을 업로드하기 전에 관련 구성을 수행해야 합니다. config/main.php 파일을 열고 다음 코드를 구성 요소에 추가합니다.

'components' => [
      'request' => [
        'parsers' => [
          'application/json' => 'yiiwebJsonParser',
          'multipart/form-data' => 'yiiwebMultipartFormDataParser',
        ],
      ],
        'request' => [
        'enableCsrfCookie' => false,
        'enableCsrfValidation' => false,
        'parsers' => [
          'multipart/form-data' => 'yiiwebMultipartFormDataParser',
        ],
      ],
        'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
        ],
      ],
 
  ],
로그인 후 복사

구성 요소에 두 개의 요청 매개 변수, 즉 파서 및 활성화CsrfValidation을 추가합니다. 파서는 요청의 파서입니다. multipart/form-data를 추가하면 파일 업로드가 허용됩니다. 활성화CsrfValidation은 CSRF 확인을 끄는 것을 의미합니다.

2. 파일 업로드 구현

컨트롤러에서 파일 업로드를 구현하면 양식 제출 또는 Ajax 업로드를 선택할 수 있습니다. 여기서는 양식 제출을 예로 들어보겠습니다.

public function actionUpload()
    {
        $uploadModel = new UploadForm();
 
        if (Yii::$app->request->isPost) {
            $uploadModel->file = UploadedFile::getInstance($uploadModel, 'file');
            if ($uploadModel->upload()) {
                // file is uploaded successfully
                return;
            }
        }
 
        return $this->render('upload', ['model' => $uploadModel]);
    }
로그인 후 복사

actionUpload에서는 파일 업로드를 위한 모델 클래스 UploadForm이 인스턴스화됩니다. 동시에 Yii::$app->request->isPost를 사용하여 POST 요청인지 여부를 확인합니다. 그렇다면 Yii::$app->request->getInstance() 메서드는 다음과 같습니다. 파일 정보를 얻기 위해 사용되며, upload() 메소드를 호출하여 파일을 업로드합니다. 업로드가 성공하면 true를 반환하고, 실패하면 false를 반환합니다.

UploadForm 클래스의 구현 코드는 다음과 같습니다.

class UploadForm extends yiiaseModel
    {
        /**
         * @var UploadedFile file attribute
         */
        public $file;
 
 
        /**
         * @return array the validation rules.
         */
        public function rules()
        {
            return [
                [['file'], 'file'],
            ];
        }
 
        public function upload()
        {
            if ($this->validate()) {
                $filePath = 'uploads/' . $this->file->baseName . '.' . $this->file->extension;
                $this->file->saveAs($filePath);
                return true;
            } else {
                return false;
            }
        }
    }
로그인 후 복사

UploadForm에서는 업로드된 파일을 저장하기 위한 공용 속성 파일이 설정됩니다. 동시에 규칙 방식을 설정하여 파일을 검증하고, 검증을 통과한 후 파일을 업로드합니다. 파일 업로드 경로는 $this->file->extension입니다.

3. 파일 다운로드 구현

파일 다운로드 기능은 구현하기가 비교적 간단합니다. 컨트롤러에서 직접 파일 스트림을 반환하기만 하면 됩니다.

public function actionDownload($file)
    {
        Yii::$app->response->sendFile($file);
    }
로그인 후 복사

actionDownload에서 Yii::$app->response->sendFile() 메서드를 사용하여 파일 스트림을 반환합니다. 여기서 $file은 파일 경로입니다.

2. 요약

이 기사에서는 Yii 프레임워크에서 파일 업로드 및 다운로드 기능을 구현하는 방법을 소개합니다. 주로 파일 업로드 및 다운로드를 위한 관련 모델의 관련 구성, 작동 및 설계를 포함합니다. 본 글의 학습을 통해 Yii 프레임워크에서의 파일 작업에 대해 더 깊이 이해하고 익숙해지며 관련 기능을 보다 편리하고 빠르게 구현할 수 있습니다.

위 내용은 Yii 프레임워크에서 파일 업로드 및 다운로드: 파일 관련 작업 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿