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

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

王林
王林앞으로
2020-08-17 17:04:013279검색

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으로 문의하시기 바랍니다. 삭제