2017-05-09 75 views
0

我已經構建了一個laravel應用程序,我在public/files目錄中有一些文件。如果我給這個鏈接到其他如下載鏈接,他們有機會了解我的目錄.. 假設鏈接我給的下載鏈接爲如何在給目錄鏈接時隱藏目錄?

www.abc.com/files/45454553535.zip 

但我不想讓用戶知道它在文件目錄中。那麼我如何隱藏目錄?

+0

可能重複[Laravel:如何隱藏url參數?](http://stackoverflow.com/questions/39951509/laravel-how-to-hide-url-parameter) –

回答

0

我不知道這是否會工作或沒有,但給你的想法。創建一個php文件使用是這樣的:

header('Content-Type: application/zip'); 
$a=file_get_contents(file.zip) 
echo $a; 

從這個用戶不知道從哪裏獲取內容。

0

試試這個。

public function getDownload() 
    { 
$filename='45454553535.zip' 
     $file= public_path(). "/files/".$filename; 

     $headers = array(
        'Content-Type: application/zip', 
       ); 

     return Response::download($file, $filename, $headers); 
    } 

「.files/45454553535.zip」你有充分的物理路徑將無法正常工作。

更新20/05/2016

Laravel 5,5.1,5.2或5 *用戶可以使用以下的方法,而不是響應門面。不過,我以前的答案將適用於Laravel 4或5。

+0

什麼是鏈接?這是關於控制器功能的權利? – User57

+0

你想要什麼和文件名,所以你知道你想下載哪個文件 –

0

你可以創建一個你的控制器和路由。

Route::get('files/{filename}', [ 
    'as' => 'file.get', 
    'uses' => '[email protected]', 
]); 

控制器應該檢查你的正確目錄。儘量保持您的文件存儲路徑,不公開。

class FileController extends Controller 
{ 
    private $path; 

    public function __construct() 
    { 
     $path = storage_path() 
      . '/your-valid-directory/'; 
    } 

    public function get($filename) 
    { 
     $file_path = $this->path 
      . filter_var($filename, FILTER_SANITIZE_STRING); 

     if (file_exists($file_path) && is_readable($file_path)) { 
      return response(file_get_contents($file_path), 200, [ 
       'Content-Type: application/zip', 
      ]); 
     } else { 
      abort(404); 
     } 
    } 
} 

現在您可以通過訪問特定文件:

{{ route('file.get', ['filename' => '45454553535.zip') }} 

這個動作產生鏈接看起來像:your-domain.com/files/45454553535.zip。 :)

無論如何,在我看來 - 在未來只是使文件工廠具有特定的標題,目錄。

祝你好運!