2017-05-10 8 views
2

웹 응용 프로그램에서 여러 파일을 업로드하려면 CUploadedFile을 사용했습니다. 나는 여러 파일을 업로드 할 때yul의 하나의 필드에 업로드 된 muliple 파일의 이름을 저장하는 방법 1

public function actionCreate(){ 
    $model=new Status(); 
    $this->performAjaxValidation($model); 
    if(isset($_POST['Status'])) 
    { 
     $model->attributes=$_POST['Status']; 
     Yii::log("actionCreate actionCreate inside if" .isset($_POST['Status'])); 
     $images = CUploadedFile::getInstancesByName('description'); 
     if(isset($images) && count($images)> 0) 
     { 

      foreach ($images as $image=>$pic) 
      { 
       if ($pic->saveAs(Yii::getPathOfAlias('webroot').'/uploads/'.$pic->name,0777)) 
       { 
        $model= new Status(); 
        $model->description =$pic->name; 
        $url = Yii::getPathOfAlias('webroot').'/uploads'; 
        $model->insert(); 
       } 
      } 
      $this->redirect(array('view','id'=>$model->status_id)); 
     } 
    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
} 

, 그것은 그들 모두를 저장하지만 서로 다른 식별자 (PK)과 .I이 description라는 하나 개의 필드에 업로드 된 모든 파일 이름을 저장해야합니다 :이 목적을 위해 다음과 같은 코드를 사용했다. 내가 어떻게 해?

+0

죄송합니다. 질문은 이해가 가지 않습니다. PK (기본 키)는 여기서 무엇을합니까? '현장'이란 무엇을 의미합니까? – szako

+0

첫 번째 답변을 보았을 때, 이제 나는 당신이 원하는 것을 이해합니다. :) – szako

답변

0

이에게 내가 루프에서 $ URL의 사용이 무엇인지 모르는

public function actionCreate(){ 
    $model=new Status(); 
    $this->performAjaxValidation($model); 
    if(isset($_POST['Status'])) 
    { 
     $model->attributes=$_POST['Status']; 
     Yii::log("actionCreate actionCreate inside if" .isset($_POST['Status'])); 
     $images = CUploadedFile::getInstancesByName('description'); 
     if(isset($images) && count($images)> 0) 
     { 
      // Create a blank array. 
      $pic_name = array(); 
      foreach ($images as $image=>$pic) 
      { 
       if ($pic->saveAs(Yii::getPathOfAlias('webroot').'/uploads/'.$pic->name,0777)) 
       { 

        //Put values in array. 
        $pic_name[$image] = $pic->name; 
        $url = Yii::getPathOfAlias('webroot').'/uploads'; 

       } 
      } 
      // If array has multiple values i.e. more than zero then and only then save it in description as a string. 
      if(count($pic_name) > 0){ 
       $_pics = implode('|',$pic_name); 

       // Do not create model everytime a new image is iterated 
       $model= new Status(); 
       $model->description = $_pics; 

       $model->insert(); 
      } 

      $this->redirect(array('view','id'=>$model->status_id)); 
     } 
    } 

    $this->render('create',array(
     'model'=>$model, 
    )); 
} 

이런 식으로 일을 시도, 그것은 그대로 내가 그것을 유지 이유입니다.