2017-01-27 4 views
0

enter image description here私のYiiフレームワークコントローラに次のコードを記述しました。このコードはローカルホストで正常に動作していますが、サーバでは動作しません。yii2フレームワークで画像をダウンロードするには

誰かがいただきましたコード

後と間違って、私はコントローラ

public function downloadFile($dir,$file,$extensions=[]){ 
    if(is_dir($dir)){ 
     $path = $dir.$file; 
     if(is_file($path)){ 
      $fileinfo=pathinfo($path); 
      $extension=$fileinfo["extension"]; 
      if(is_array($extensions)){ 
       foreach($extensions as $e){ 
        if($e===$extension){ 
         $size = filesize($path); 
         header('Content-Type: application/octet-stream'); 
         header('Content-Length: '.$size); 
         header('Content-Disposition: attachment; filename='.$file); 
         header('Content-Transfer-Encoding: binary'); 
         readfile($path); 
         return true; 
        } 
       } 
      } 
     }else{ 
      echo"error"; 
     } 
    } 
} 

public function actionDownload(){ 
    if(Yii::$app->request->get('file')){   
     $this->downloadFile("media/offer/",Html::encode($_GET["file"]),["jpg","png"]); 
    } 
} 
+0

私の答えを確認してください。それはあなたのタグについて不平を言っていなかった、それはあなたの機能に関するものでした。 yii2でサーバーからファイルをダウンロードするのが適切な方法です。 – Yupik

答えて

0

あなたはyii2というタグを付けましたが、それはyii2という純粋なPHPではありません。

これを行うにはフレームワークを使用しますか?

public function actionFile($filename) 
{ 
    $storagePath = Yii::getAlias('@app/files'); 

    // check filename for allowed chars (do not allow ../ to avoid security issue: downloading arbitrary files) 
    if (!preg_match('/^[a-z0-9]+\.[a-z0-9]+$/i', $filename) || !is_file("$storagePath/$filename")) { 
     throw new \yii\web\NotFoundHttpException('The file does not exists.'); 
    } 
    return Yii::$app->response->sendFile("$storagePath/$filename", $filename); 
} 

Yii2 - sendFile()

^変更storagePathファイルのディレクトリに移動します。

これ以上のことはありません。

0

を書かれている私のコードは、私はちょうど

public function downloadFile($dir,$file,$extensions=[]){ 
    if(is_dir($dir)){ 
     $path = $dir.$file; 
     if(is_file($path)){ 
      $fileinfo=pathinfo($path); 
      $extension=$fileinfo["extension"]; 
      if(is_array($extensions) && in_array($extension, $extensions)){ 

       header('Content-Description: File Transfer'); 
       header('Content-Type: application/octet-stream'); 
       header('Content-Disposition: attachment; filename='.basename($path)); 
       header('Content-Transfer-Encoding: binary'); 
       header('Expires: 0'); 
       header('Cache-Control: must-revalidate'); 
       header('Pragma: public'); 
       header('Content-Length: ' . filesize($path)); 
       ob_clean(); 
       flush(); 
       readfile($path); 
       exit; 

      } 
     }else{ 
      echo"error"; 
     } 
    } 
} 

、あなたとこの機能を置き換えているを教えてくださいすることができ

downloadFile("/var/www/html/", "test.php", ['php']); 

それは私のために働いた。

+0

交換します。しかし、まだ動作していない –

+0

あなたはどのようなエラーを得ることができます説明できますか?それが条件の中に入るかどうか? – pravindot17

+0

問題のスクリーンショットが添付されています –

関連する問題