2015-10-14 16 views
5

Tworzę model w Yii2 z tego linku http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html Wysyłam plik za pomocą żądania POST do API i otrzymuję wszystkie informacje o pliku w moim kontrolerze, ale nie mogę przesłać pliku przy użyciu tego modelu Yii2.0 utworzonego za pomocą powyższego linku normalne przesyłanie pliku PHP Kod działa dobrze. Oto mój kod kontroleraJak przesłać plik na serwer przez POST API w Yii2.0?

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

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

i mój kod model jest

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

pokazać swój model, a kontroler proszę – scaisEdge

+0

zmienić pytanie, jeśli masz jakiekolwiek Metoda, aby go pokonać, daj mi znać –

+0

Nie jestem eksperymentem, ale dlaczego korzystasz z $ _files, a nie $ _post ?. a "/ var/wwww/html /" jest ścieżką bezwzględną, a nie ścieżką względną ... i "wwww" 4w? jest w porządku? – scaisEdge

Odpowiedz

3

Spróbuj w ten sposób

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]); 
} 
Powiązane problemy