2015-10-14 88 views
5

我從這個鏈接製作yii2的模型 http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html 我使用POST請求將文件發佈到API,並獲取了我的控制器中的所有文件信息,但無法使用上面鏈接正常PHP文件上傳創建的Yii2.0模型上傳文件代碼工作正常。 這裏是我的控制器代碼如何通過Yii2.0的POST API將文件上傳到服務器?

public function actionUploadFile() 
    { 
     $upload = new UploadForm(); 
     var_dump($_FILES); 

     $upload->imageFile = $_FILES['image']['tmp_name']; 
     //$upload->imageFile = $_FILES; 
     var_dump($upload->upload()); 
    } 

和我的模型代碼是

class UploadForm extends Model 
    { 
    /** 
    * @var UploadedFile 
    */ 
    public $imageFile; 

    public function rules() 
    { 
     return [ 
      [['imageFile'], 'safe'], 
      [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'], 
     ]; 
    } 

    public function upload() 
    { 
     try { 
      if ($this->validate()) { 
       $this->imageFile->saveAs('/var/www/html/' . $this->imageFile->baseName . '.' . $this->imageFile->extension); 
       var_dump("Jeree"); 
       return true; 
      } else { 
       var_dump($this->getErrors()); 
       return false; 
      } 
     }catch (ErrorException $e) { 
      var_dump($e->getMessage()); 
     } 
    } 
    } 
+0

顯示你的模型和控制器請 – scaisEdge

+0

我改變的問題,如果您有任何方法來克服它,然後讓我知道 –

+0

我不是一個專家,但爲什麼你使用$ _files而不是$ _post ?.和'/ var/wwww/html /'是絕對路徑而不是相對路徑...和'wwww'4w?是對的? – scaisEdge

回答

3

嘗試這種方式

public function actionUpload() 
{ 
    $model = new UploadForm(); 

    if (Yii::$app->request->isPost) { 
     $model->file = UploadedFile::getInstance($model, 'file'); 

     if ($model->validate()) {     
      $model->file->saveAs('/var/www/html/' . $model->file->baseName . '.' . $model->file->extension); 
     } 
    } 

    return $this->render('upload', ['model' => $model]); 
} 
相關問題