> PHP 프레임워크 > YII > yii 프레임워크를 사용하여 파일 업로드 및 다운로드 기능 구현

yii 프레임워크를 사용하여 파일 업로드 및 다운로드 기능 구현

王林
풀어 주다: 2020-08-17 17:04:01
앞으로
3250명이 탐색했습니다.

yii 프레임워크를 사용하여 파일 업로드 및 다운로드 기능 구현

1. CUploadedFile은 단일 파일 업로드를 구현합니다

(권장 튜토리얼: yii 프레임워크)

(1) 먼저 모델 클래스에서 속성을 선언하여 파일 이름(양식 모델 또는 활성 레코드 모델)을 저장합니다. 또한 업로드된 파일이 지정된 확장자를 갖도록 파일 유효성 검사 규칙을 선언합니다.

class Item extends CActiveRecord
{
    public $image;
    // ... other attributes
 
    public function rules()
    {
        return array(
            array('image', 'file', 'types'=>'jpg, gif, png'),
        );
    }
}
로그인 후 복사

(2) 그런 다음 사용자가 제출한 데이터를 수집하기 위해 컨트롤러 클래스에 액션 메서드를 정의합니다

class ItemController extends CController
{
    public function actionCreate()
    {
        $model=new Item;
        if(isset($_POST['Item']))
        {
            $model->attributes=$_POST['Item'];
            $model->image=CUploadedFile::getInstance($model,'image');
            if($model->save())
            {
                $model->image->saveAs('path/to/localFile');
                // redirect to success page
            }
        }
        $this->render('create', array('model'=>$model));
    }
}
로그인 후 복사

(권장 관련 튜토리얼: php 그래픽 튜토리얼)

(3) 마지막으로 액션 뷰를 생성하고 업로드 필드를 생성합니다.

<?php echo CHtml::form(&#39;&#39;,&#39;post&#39;,array(&#39;enctype&#39;=>&#39;multipart/form-data&#39;)); ?>
...
<?php echo CHtml::activeFileField($model, &#39;image&#39;); ?>
...
<?php echo CHtml::endForm(); ?>
로그인 후 복사

2. CUploadedFile은 다중 파일 업로드를 구현합니다

방법: 보기 코드:

for($i=0;$i<3;$i++){
    //echo $form->fileField($model,&#39;xiangguan_tupian[]&#39;).&#39;<br/>&#39;;//这种方法不行
    //echo CHtml::activeFileField($model,&#39;xiangguan_tupian[]&#39;);//这种也不行
    //echo CHtml::fileField(&#39;xiangguan_tupian[]&#39;,&#39;&#39;,array(&#39;id&#39;=>&#39;xiangguan_tupian&#39;.$i)).&#39;&nbsp&#39;;//这种也不行
    echo CHtml::activeFileField($model,&#39;xiangguan_tupian[]&#39;,array(&#39;id&#39;=>&#39;xiangguan_tupian&#39;.$i));
}
?>
로그인 후 복사

컨트롤러 컨트롤러 측:

$model=new Info;
// echo &#39;<hr><br>&#39;;
$obj_array=CUploadedFIle::getInstances($model,&#39;xiangguan_tupian&#39;);
//注意这里不是getInstance而是getInstances多了个s,这样得到的是一个包含CUploadedFile对象的数组
//print_r($obj_array);
foreach($obj_array as $k=>$v){
    $v->saveAs(Yii::app()->basePath.&#39;/&#39;.$k.&#39;_test.&#39;.$v->getExtensionName());
}
로그인 후 복사

다중 파일 업로드 처리가 완료되었습니다.

(학습 영상 추천: php 영상 튜토리얼)

핵심 포인트:

CUploadedFile::getInstance();    // 返回的是一个CUploadedFile对象,
CUploadeFile::getInstanceByName();   //返回的是一个CUploadedFile对象            
CUploadedFile::getInstances()    //返回的是一个值为CUploadedFile对象的数组
CUploadedFile::getInstancesByName();   //返回的是一个值为CUploadedFile对象的数组
로그인 후 복사

3 파일을 다운로드하려면 sendFile()을 사용하세요

$type = LFilter::checkString($_GET[&#39;t&#39;]);
$dataProvider = Book::model()->findByPk($id);
$content = $this->renderPartial(&#39;book&#39;,array(
&#39;dataProvider&#39; => $dataProvider,
&#39;type&#39; => $type,
),true,false);
Yii::app()->request->sendFile($dataProvider->name.&#39;.&#39;.$type,$content);
}
로그인 후 복사
.

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

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