2017-05-10 1 views
2

Ich habe CUploadedFile verwendet, um mehrere Dateien in meine Webanwendung hochzuladen. Früher habe ich für diesen Zweck folgenden Code:So speichern Sie die Namen mehrerer hochgeladener Dateien in ein Feld in yii 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, 
    )); 
} 

Wenn ich mehrere Dateien hochladen, sie alle von ihnen speichert, jedoch mit unterschiedlichen ids (PK) .Ich müssen alle hochgeladenen Dateien Namen zu dem einen Feld description genannt speichern. Wie kann ich es tun?

+0

Sorry, aber ich verstehe die Frage nicht. Was macht der PK (Primärschlüssel) hier? Was meinst du mit 'Feld'? – szako

+0

Jetzt, wie ich die erste Antwort sehe, verstehe ich jetzt, was Sie wollten. :) – szako

Antwort

0

Versuchen Sie es auf diese Weise tun

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, 
    )); 
} 

Ich weiß nicht, was die Verwendung von $ url in der Schleife ist, das ist, warum ich gehalten habe, wie es ist.