2016-08-03 9 views
1
public function actionUnduh($id) { 
     $download = PstkIdentifikasi::findOne($id); 
     $path = Yii::getAlias('../web/bukti/') . $download->bukti; 

     if (file_exists($path)) { 
      //return \Yii::$app->response->sendFile($download->pre_paper,@file_get_contents($path)); 
      return Yii::$app->response->sendFile($path); 
     } 
    } 

Ich brauche Datei aus dem Ordner web/Bukti zum Download, wird der Code nicht fehler aber der Code nicht funktioniert, Wer kann mir helfen :(Funktion Herunterladen in Yii2

Antwort

5

die Siehe Yii2 Aliases

public function actionUnduh($id) 
{ 
    $download = PstkIdentifikasi::findOne($id); 
    $path = Yii::getAlias('@webroot').'/bukti/'.$download->bukti; 

    if (file_exists($path)) { 
     return Yii::$app->response->sendFile($path); 
    } 
} 
+0

es funktioniert, danke – christ

+0

Bitte überprüfen Sie immer, ob '$ download' nicht leer ist, bevor Sie es verwenden. Es ist nicht gefährlich hier, aber es könnte woanders sein. – stfsngue

0

Zum einen können Sie eine Aktion in SiteController.php wie folgt schreiben:

public function actionDownload() 
{ 
    $file=Yii::$app->request->get('file'); 
    $path=Yii::$app->request->get('path'); 
    $root=Yii::getAlias('@webroot').$path.$file; 
    if (file_exists($root)) { 
     return Yii::$app->response->sendFile($root); 
    } else { 
     throw new \yii\web\NotFoundHttpException("{$file} is not found!"); 
    } 
} 

dann können Sie diese f nennen Salbung überall:

Yii::$app->urlManager->createUrl(['site/download','path'=>'/upload/files/','file'=>'filename.pdf']) 

Seien Sie vorsichtig Ihre Dateien in diesem Verzeichnis sein muss:

"backend/web/upload/files/filename.pdf"

oder

"Frontend/Web/Upload/Dateien/Dateiname.pdf"