2016-06-29 42 views
2

我有一個要求將文檔上傳到服務器,因爲它是個人的,他們希望它被上傳到公共文件夾之外。我知道如何上傳一個文件:Yii 2.在公共文件夾之外上傳文檔

if ($model->load(Yii::$app->request->post())) { 

      $model->document = UploadedFile::getInstance($model, 'document'); 
      if ($model->upload() !== false) { 
       $model->save(); 
      } 

      return $this->redirect(['view', 'id' => $model->id]); 
     } else { 
      return $this->render('create', [ 
       'model' => $model, 
      ]); 
     } 

但是我該如何閱讀它,因爲Url將無法訪問它?我打算創建一個獲取文件的動作,但不知道Yii是否有適合這種情況的東西?

回答

2

是Yii可以發送文件輸出,但是您仍然需要創建自己的操作。

讓我們在siteController中假設下面的代碼特定於圖像輸出,您可以使用相同的方式輸出其他文件。

public function actionImage($image_path) { 
     Yii::$app->getResponse()->sendFile(Yii::getAlias('@image_uploads') . $image_path); 
} 

現在圖片src將會像

<img src="/site/image?image_path=/posts/1.png" />或等同於實際應用的URL路徑

所以基本功能通過Yii2發送文件輸出爲

的Yii :: $ APP-> GETRESPONSE() - >的sendfile();

坐落在

\警予\網絡\ Response.php

+0

謝謝!。這非常有用 – Eduardo

相關問題